ng2-rest 16.444.13 → 18.0.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.
Files changed (63) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/esm2022/lib/cookie.mjs +1 -1
  3. package/browser/esm2022/lib/helpers.mjs +2 -3
  4. package/browser/esm2022/lib/mapping.mjs +1 -1
  5. package/browser/esm2022/lib/models.mjs +1 -1
  6. package/browser/esm2022/lib/other/simple-resource.mjs +2 -3
  7. package/browser/esm2022/lib/params.mjs +1 -1
  8. package/browser/esm2022/lib/request-cache.mjs +2 -3
  9. package/browser/esm2022/lib/resource-service.mjs +2 -3
  10. package/browser/esm2022/lib/rest-headers.mjs +1 -1
  11. package/browser/esm2022/lib/rest-request.mjs +2 -3
  12. package/browser/esm2022/lib/rest.class.mjs +1 -1
  13. package/browser/fesm2022/ng2-rest.mjs.map +1 -1
  14. package/client/esm2022/lib/cookie.mjs +1 -1
  15. package/client/esm2022/lib/helpers.mjs +2 -3
  16. package/client/esm2022/lib/mapping.mjs +1 -1
  17. package/client/esm2022/lib/models.mjs +1 -1
  18. package/client/esm2022/lib/other/simple-resource.mjs +2 -3
  19. package/client/esm2022/lib/params.mjs +1 -1
  20. package/client/esm2022/lib/request-cache.mjs +2 -3
  21. package/client/esm2022/lib/resource-service.mjs +2 -3
  22. package/client/esm2022/lib/rest-headers.mjs +1 -1
  23. package/client/esm2022/lib/rest-request.mjs +2 -3
  24. package/client/esm2022/lib/rest.class.mjs +1 -1
  25. package/client/fesm2022/ng2-rest.mjs.map +1 -1
  26. package/firedev.jsonc +14 -6
  27. package/lib/cookie.js.map +1 -1
  28. package/lib/helpers.js +2 -1
  29. package/lib/helpers.js.map +1 -1
  30. package/lib/mapping.js +1 -1
  31. package/lib/mapping.js.map +1 -1
  32. package/lib/models.d.ts +0 -1
  33. package/lib/models.js +2 -3
  34. package/lib/models.js.map +1 -1
  35. package/lib/other/simple-resource.js +2 -1
  36. package/lib/other/simple-resource.js.map +1 -1
  37. package/lib/params.js +12 -12
  38. package/lib/params.js.map +1 -1
  39. package/lib/request-cache.js +2 -1
  40. package/lib/request-cache.js.map +1 -1
  41. package/lib/resource-service.js +2 -1
  42. package/lib/resource-service.js.map +1 -1
  43. package/lib/rest-headers.js.map +1 -1
  44. package/lib/rest-request.js +5 -4
  45. package/lib/rest-request.js.map +1 -1
  46. package/lib/rest.class.js.map +1 -1
  47. package/package.json +10 -10
  48. package/tmp-environment.json +202 -202
  49. package/websql/esm2022/lib/cookie.mjs +1 -1
  50. package/websql/esm2022/lib/helpers.mjs +2 -3
  51. package/websql/esm2022/lib/mapping.mjs +1 -1
  52. package/websql/esm2022/lib/models.mjs +1 -1
  53. package/websql/esm2022/lib/other/simple-resource.mjs +2 -3
  54. package/websql/esm2022/lib/params.mjs +1 -1
  55. package/websql/esm2022/lib/request-cache.mjs +2 -3
  56. package/websql/esm2022/lib/resource-service.mjs +2 -3
  57. package/websql/esm2022/lib/rest-headers.mjs +1 -1
  58. package/websql/esm2022/lib/rest-request.mjs +2 -3
  59. package/websql/esm2022/lib/rest.class.mjs +1 -1
  60. package/websql/fesm2022/ng2-rest.mjs.map +1 -1
  61. package/browser/package.json +0 -25
  62. package/client/package.json +0 -382
  63. package/websql/package.json +0 -25
@@ -6,7 +6,7 @@ import { RestRequest } from './rest-request';
6
6
  import { Cookie } from './cookie';
7
7
  import { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';
8
8
  import { Helpers } from 'tnp-core/websql';
9
- class Resource {
9
+ export class Resource {
10
10
  static { this._listenErrors = new Subject(); }
11
11
  static { this._listenSuccess = new Subject(); }
12
12
  static get listenErrors() {
@@ -215,7 +215,6 @@ Instead use nested approach: /book/:bookid/author/:authorid
215
215
  return res;
216
216
  }
217
217
  }
218
- export { Resource };
219
218
  ;
220
219
  ({}); // @--end-of-file-for-module=ng2-rest lib/resource-service.ts
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc291cmNlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQ3RDLEtBQUssQ0FBQyxTQUFTLENBQ2hCLENBQUE7QUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFNekMsTUFBYSxRQUFRO2FBQ0Ysa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQzthQUNuRCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO0lBQ25FLE1BQU0sS0FBSyxZQUFZO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxLQUFLLHVCQUF1QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQzthQUNhLG1CQUFjLEdBQVksSUFBSSxDQUFDO0lBR3JDLE9BQU87UUFDYixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFBO1FBQzlDLElBQUksTUFBTSxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBQUEsQ0FBQztRQUN2QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ2xELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNwRixNQUFNLGVBQWUsR0FBVSx5QkFBeUIsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUM3QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDakYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSTtRQUNsQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYSxFQUFFLFNBQWlCO1FBRXhELEtBQUssSUFBSSxDQUFDLElBQUksU0FBUyxFQUFFO1lBQ3ZCLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDZCxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRTt3QkFDcEMsS0FBSyxHQUFHLENBQUMsQ0FBQzt3QkFDVixNQUFNO3FCQUNQO2lCQUNGO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzthQUVjLGFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBb0IsQ0FBQzthQUM1QyxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0IsRUFBRSxLQUFhO1FBQ3BELEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDLENBQUM7U0FBRTtRQUMxQixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7YUFDYyxZQUFPLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7SUFLakQsTUFBTSxDQUFDLE1BQU0sQ0FDbEIsQ0FBUyxFQUNULEtBQWMsRUFDZCxhQUErQixFQUMvQixRQUFpQixFQUNqQixpQkFBK0I7UUFFL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRyxJQUFJLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDOztrQkFFSixLQUFLOzs7O2FBSVYsQ0FBQyxDQUFBO1NBQ1Q7UUFBQSxDQUFDO1FBQ0YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXpGLE9BQU87WUFDTCxLQUFLLEVBQUUsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUMvQyxDQUFDLEVBQ0Qsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUN0QztZQUNELE1BQU0sRUFBRSxDQUFDLE1BQXlCLEVBQUUsRUFBRTtnQkFDcEMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLE9BQU87Z0JBQ1QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0lBSU0sTUFBTSxDQUFDLEtBQUs7UUFDakIsUUFBUSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUlEO1FBQ0UsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTthQUFFO1lBQUEsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7YUFHYSxZQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUdoQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQWdCLEVBQUUsR0FBVztRQUU5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNqQixJQUFJLEtBQUssR0FBRyw2RUFBNkUsQ0FBQztRQUMxRixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUM7U0FDNUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHO1lBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDdkIsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMERBQTBEO2tCQUNsRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNyQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUN0QixHQUFHLEVBQUUsR0FBRztZQUNSLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO1FBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdPLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSztRQUMvQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHO1lBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUlEOzs7Ozs7T0FNRztJQUNLLEdBQUcsQ0FBQyxRQUFXLEVBQUUsS0FBYSxFQUFFLE1BQXVCLEVBQUUsUUFBaUIsRUFBRSxpQkFBK0I7UUFDakgsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLEtBQUssT0FBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBUyxDQUFDO1FBQ2QsQ0FBQyxHQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDcEUsT0FBTztTQUNSO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNsRCxJQUFJLFFBQVEsQ0FBQyxjQUFjO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLG9DQUFvQztzQkFDekYsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixPQUFPO1NBQ1I7UUFDRCxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQVEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO2tCQUNyQyxHQUFHLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pDLFFBQVEsRUFBRSxDQUFDO2dCQUNYLElBQUksRUFBRSxLQUFLO2dCQUNYLE1BQU07Z0JBQ04sUUFBUTthQUNULEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztRQUNsRSxPQUFPO0lBQ1QsQ0FBQztJQUlEOzs7Ozs7T0FNRztJQUNLLEdBQUcsQ0FBQyxRQUFXLEVBQUUsS0FBYTtRQU9wQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztZQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLEdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDcEMsTUFBTSxhQUFrQixRQUFRLHNDQUFzQyxLQUFLLEVBQUUsQ0FBQztTQUMvRTtRQUNELElBQUksU0FBUyxHQUFXLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNyQixLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVqRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBRWxELE1BQU0sVUFBVSxLQUFLLCtCQUErQixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ2xGO1FBRUQsSUFBSSxHQUFHLEdBQWdCLFFBQVEsQ0FBQyxTQUFTLENBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQU92RixJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBSXBFLEdBQUcsQ0FBQyxlQUFlLEdBQUcsR0FBRyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7U0FDaEQ7YUFBTTtZQUNMLEdBQUcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDOUI7UUFBQSxDQUFDO1FBR0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztTQW5QVSxRQUFRO0FBbVFwQixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZEQUE2RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdyZXNvdWNlLXNlcnZpY2UnLFxuICBMZXZlbC5fX05PVEhJTkdcbilcblxuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4vcmVzdC5jbGFzcyc7XG5pbXBvcnQgeyBSZXN0UmVxdWVzdCB9IGZyb20gJy4vcmVzdC1yZXF1ZXN0JztcbmltcG9ydCB7IFJlc3RIZWFkZXJzIH0gZnJvbSAnLi9yZXN0LWhlYWRlcnMnO1xuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnLi9jb29raWUnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBpbnRlcnBvbGF0ZVBhcmFtc1RvVXJsLCBpc1ZhbGlkLCBjb250YWluc01vZGVscywgZ2V0TW9kZWxzIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgQ2lyYyB9IGZyb20gJ2pzb24xMC93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCdcblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5FcnJvcnMgPSBuZXcgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPigpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5TdWNjZXNzID0gbmV3IFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PigpO1xuICBwdWJsaWMgc3RhdGljIGdldCBsaXN0ZW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlbkVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlblN1Y2Nlc3NPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5TdWNjZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZW5hYmxlV2FybmluZ3M6IGJvb2xlYW4gPSB0cnVlO1xuXG5cbiAgcHJpdmF0ZSBnZXRab25lKCkge1xuICAgIGNvbnN0IGlzTm9kZSA9ICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICBpZiAoaXNOb2RlKSB7IHJldHVybiB9O1xuICAgIGNvbnN0IG5nID0gd2luZG93WyduZyddO1xuICAgIGNvbnN0IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMgPSB3aW5kb3dbJ2dldEFsbEFuZ3VsYXJSb290RWxlbWVudHMnXTtcbiAgICBpZiAoIW5nIHx8ICFnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb2JlID0gbmcucHJvYmU7XG4gICAgY29uc3QgY29yZVRva2VucyA9IG5nLmNvcmVUb2tlbnM7XG4gICAgaWYgKCFjb3JlVG9rZW5zIHx8ICFjb3JlVG9rZW5zLk5nWm9uZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lQ2xhc3MgPSBjb3JlVG9rZW5zLk5nWm9uZTtcbiAgICBpZiAoIXByb2JlIHx8IHR5cGVvZiBwcm9iZSAhPT0gJ2Z1bmN0aW9uJyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBhbmd1bGFyRWxlbWVudHM6IGFueVtdID0gZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cygpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhbmd1bGFyRWxlbWVudHMpIHx8IGFuZ3VsYXJFbGVtZW50cy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBuZy5wcm9iZShhbmd1bGFyRWxlbWVudHNbMF0pO1xuICAgIGlmICghcm9vdEVsZW1lbnQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgaW5qZWN0b3IgPSByb290RWxlbWVudC5pbmplY3RvcjtcbiAgICBpZiAoIWluamVjdG9yIHx8ICFpbmplY3Rvci5nZXQgfHwgdHlwZW9mIGluamVjdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lID0gaW5qZWN0b3IuZ2V0KHpvbmVDbGFzcylcbiAgICByZXR1cm4gem9uZTtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBpbml0QW5ndWxhck5nWm9uZSh6b25lKSB7XG4gICAgUmVzdFJlcXVlc3Quem9uZSA9IHpvbmU7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTmVzdGVkTW9kZWxzKG1vZGVsOiBzdHJpbmcsIGFsbE1vZGVsczogT2JqZWN0KSB7XG5cbiAgICBmb3IgKGxldCBwIGluIGFsbE1vZGVscykge1xuICAgICAgaWYgKGFsbE1vZGVscy5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICBsZXQgbSA9IGFsbE1vZGVsc1twXTtcbiAgICAgICAgaWYgKGlzVmFsaWQocCkpIHtcbiAgICAgICAgICBsZXQgdXJsTW9kZWxzID0gZ2V0TW9kZWxzKHApO1xuICAgICAgICAgIGlmIChjb250YWluc01vZGVscyhtb2RlbCwgdXJsTW9kZWxzKSkge1xuICAgICAgICAgICAgbW9kZWwgPSBwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUmVzb3VyY2U8c3RyaW5nLCBhbnksIGFueT4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW5kcG9pbnRzID0ge307XG4gIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWwoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZyk6IFJlc3Q8YW55PiB7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuICAgIGNvbnN0IGUgPSBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdO1xuICAgIGlmICghZSkgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgY29uc3QgciA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF0ubW9kZWxzW21vZGVsXTtcbiAgICByZXR1cm4gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICB9XG4gIHByaXZhdGUgc3RhdGljIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0ID0gbmV3IFJlc3RSZXF1ZXN0KCk7XG5cblxuXG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGU8QSwgVEEgPSBBW10+KFxuICAgIGU6IHN0cmluZyxcbiAgICBtb2RlbD86IHN0cmluZyxcbiAgICBlbnRpdHlNYXBwaW5nPzogTWFwcGluZy5NYXBwaW5nLFxuICAgIGNpcmN1bGFyPzogQ2lyY1tdLFxuICAgIGN1c3RvbUNvbnRlbnRUeXBlPzogUmVzdEhlYWRlcnMsXG4gICk6IE1vZGVscy5SZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgY29uc3QgYmFkUmVzdFJlZ0VYID0gbmV3IFJlZ0V4cCgnKChcXC86KVthLXpdKykrJywgJ2cnKTtcbiAgICBjb25zdCBtYXRjaEFyciA9IG1vZGVsLm1hdGNoKGJhZFJlc3RSZWdFWCkgfHwgW107XG4gICAgY29uc3QgYmFkTW9kZWxzTmV4dFRvRWFjaE90aGVyID0gbWF0Y2hBcnIuam9pbigpO1xuICAgIGNvbnN0IGF0bGVhczJEb3VibGVEb3RzID0gKChiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIubWF0Y2gobmV3IFJlZ0V4cCgnOicsICdnJykpIHx8IFtdKS5sZW5ndGggPj0gMik7XG4gICAgaWYgKGF0bGVhczJEb3VibGVEb3RzICYmIG1vZGVsLnNlYXJjaChiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcblxuQmFkIHJlc3QgbW9kZWw6ICR7bW9kZWx9XG5cbkRvIG5vdCBjcmVhdGUgcmVzdCBtb2RlbHMgbGlrZSB0aGlzOiAgICAvYm9vay9hdXRob3IvOmJvb2tpZC86YXV0aG9yaWRcbkluc3RlYWQgdXNlIG5lc3RlZCBhcHByb2FjaDogICAgICAgICAgICAvYm9vay86Ym9va2lkL2F1dGhvci86YXV0aG9yaWRcbiAgICAgICAgICAgIGApXG4gICAgfTtcbiAgICBSZXNvdXJjZS5tYXAoZSwgZSk7XG4gICAgUmVzb3VyY2UuaW5zdGFuY2UuYWRkKGUsIG1vZGVsID8gbW9kZWwgOiAnJywgZW50aXR5TWFwcGluZywgY2lyY3VsYXIsIGN1c3RvbUNvbnRlbnRUeXBlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBtb2RlbDogKHBhcmFtcz86IE9iamVjdCkgPT4gUmVzb3VyY2UuaW5zdGFuY2UuYXBpKFxuICAgICAgICBlLFxuICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtc1RvVXJsKHBhcmFtcywgbW9kZWwpXG4gICAgICApLFxuICAgICAgcmVwbGF5OiAobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkgPT4ge1xuICAgICAgICBSZXNvdXJjZS5nZXRNb2RlbChlLCBtb2RlbCkucmVwbGF5KG1ldGhvZCk7XG4gICAgICB9LFxuICAgICAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiBSZXNvdXJjZS5nZXRNb2RlbChlLCBtb2RlbCkuaGVhZGVycztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cbiAgcHVibGljIHN0YXRpYyByZXNldCgpIHtcbiAgICBSZXNvdXJjZS5lbmRwb2ludHMgPSB7fTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSgpO1xuICAgICAgaWYgKCFSZXN0UmVxdWVzdC56b25lKSB7IFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lIH07XG4gICAgfSlcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBDb29raWVzID0gQ29va2llLkluc3RhbmNlO1xuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWFwKGVuZHBvaW50OiBzdHJpbmcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsb2cuaSgndXJsJywgdXJsKVxuICAgIGxldCByZWdleCA9IC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6ezAsMX1cXHcqKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJSFcXC1cXC9dKSk/LztcbiAgICBsZXQgZSA9IGVuZHBvaW50O1xuICAgIGlmICghcmVnZXgudGVzdCh1cmwpKSB7XG4gICAgICB0aHJvdyBgVXJsIGFkZHJlc3MgaXMgbm90IGNvcnJlY3Q6ICR7dXJsfWA7XG4gICAgfVxuICAgIGlmICh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJy8nKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgIGxvZy5pKCd1cmwgYWZ0ZXInLCB1cmwpXG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXSAhPT0gdm9pZCAwKSB7XG4gICAgICBIZWxwZXJzLmxvZygnQ2Fubm90IHVzZSBtYXAgZnVuY3Rpb24gYXQgdGhlIHNhbWUgQVBJIGVuZHBvaW50IGFnYWluICgnXG4gICAgICAgICsgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybCArICcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFJlc291cmNlLmVuZHBvaW50c1tlXSA9IHtcbiAgICAgIHVybDogdXJsLFxuICAgICAgbW9kZWxzOiB7fSxcbiAgICAgIGVudGl0eTogbnVsbFxuICAgIH07XG4gICAgbG9nLmkoJ2VucG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBwcmVwYXJlTW9kZWwobW9kZWwpIHtcbiAgICBpZiAobW9kZWwuY2hhckF0KG1vZGVsLmxlbmd0aCAtIDEpID09PSAnLycpIG1vZGVsID0gbW9kZWwuc2xpY2UoMCwgbW9kZWwubGVuZ3RoIC0gMSk7XG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBBbmQgZW5pcG9pbnQgdG8gYXBwbGljYXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBwcml2YXRlIGFkZChlbmRwb2ludDogRSwgbW9kZWw6IHN0cmluZywgZW50aXR5OiBNYXBwaW5nLk1hcHBpbmcsIGNpcmN1bGFyPzogQ2lyY1tdLCBjdXN0b21Db250ZW50VHlwZT86IFJlc3RIZWFkZXJzKSB7XG4gICAgbG9nLmkoYEkgYW0gbWFwaW5nICR7bW9kZWx9IG9uICR7PGFueT5lbmRwb2ludH1gKTtcbiAgICBtb2RlbCA9IFJlc291cmNlLnByZXBhcmVNb2RlbChtb2RlbCk7XG5cbiAgICBsZXQgZTogc3RyaW5nO1xuICAgIGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0gPT09IHZvaWQgMCkge1xuICAgICAgY29uc29sZS5lcnJvcignRW5kcG9pbnQgaXMgbm90IG1hcHBlZCAhIENhbm5vdCBhZGQgbW9kZWwgJyArIG1vZGVsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXS5tb2RlbHNbbW9kZWxdICE9PSB2b2lkIDApIHtcbiAgICAgIGlmIChSZXNvdXJjZS5lbmFibGVXYXJuaW5ncykgY29uc29sZS53YXJuKGBNb2RlbCAnJHttb2RlbH0nIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBlbmRwb2ludDogYFxuICAgICAgICArIFJlc291cmNlLmVuZHBvaW50c1tlXS51cmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9XG4gICAgICBuZXcgUmVzdDxULCBUQT4oUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybFxuICAgICAgICArICcvJyArIG1vZGVsLCBSZXNvdXJjZS5yZXF1ZXN0LCB7XG4gICAgICAgIGVuZHBvaW50OiBlLFxuICAgICAgICBwYXRoOiBtb2RlbCxcbiAgICAgICAgZW50aXR5LFxuICAgICAgICBjaXJjdWxhcixcbiAgICAgIH0sIGN1c3RvbUNvbnRlbnRUeXBlKTsgLy8gVE9ETyBwdXQgY3VzdG9tIGNvbnRlbnQgdHlwZSBpbiBtZXRhID9cbiAgICByZXR1cm47XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEFjY2VzcyBhcGkgdGhyb3VnaHQgZW5kcG9pbnRcbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge1Jlc3Q8VCwgVEE+fVxuICAgKi9cbiAgcHJpdmF0ZSBhcGkoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcpOiBSZXN0PFQsIFRBPiB7XG5cblxuXG5cblxuXG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgbGV0IGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGBFbmRwb2ludDogJHs8YW55PmVuZHBvaW50fSBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbDogJHttb2RlbH1gO1xuICAgIH1cbiAgICBsZXQgYWxsTW9kZWxzOiBPYmplY3QgPSBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzO1xuICAgIGxldCBvcmdNb2RlbCA9IG1vZGVsO1xuICAgIG1vZGVsID0gdGhpcy5jaGVja05lc3RlZE1vZGVscyhtb2RlbCwgYWxsTW9kZWxzKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9PT0gdm9pZCAwKSB7XG5cbiAgICAgIHRocm93IGBNb2RlbCAnJHttb2RlbH0nIGlzIHVuZGVmaW5lZCBpbiBlbmRwb2ludDogJHtSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsfSBgO1xuICAgIH1cblxuICAgIGxldCByZXM6IFJlc3Q8VCwgVEE+ID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS5tb2RlbHNbbW9kZWxdO1xuXG5cblxuXG5cblxuICAgIGlmIChvcmdNb2RlbCAhPT0gbW9kZWwpIHtcbiAgICAgIGxldCBiYXNlVXJsID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS51cmw7XG5cblxuXG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gYCR7YmFzZVVybH0vJHtvcmdNb2RlbH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gdm9pZCAwO1xuICAgIH07XG5cblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuXG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL3Jlc291cmNlLXNlcnZpY2UudHMiXX0=
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc291cmNlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQ3RDLEtBQUssQ0FBQyxTQUFTLENBQ2hCLENBQUE7QUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFNekMsTUFBTSxPQUFPLFFBQVE7YUFDRixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO2FBQ25ELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7SUFDbkUsTUFBTSxLQUFLLFlBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxNQUFNLEtBQUssdUJBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO2FBQ2EsbUJBQWMsR0FBWSxJQUFJLENBQUM7SUFHckMsT0FBTztRQUNiLE1BQU0s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QUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFPdkYsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBSXBFLEdBQUcsQ0FBQyxlQUFlLEdBQUcsR0FBRyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFBQSxDQUFDO1FBR0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztBQWdCRixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZEQUE2RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdyZXNvdWNlLXNlcnZpY2UnLFxuICBMZXZlbC5fX05PVEhJTkdcbilcblxuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4vcmVzdC5jbGFzcyc7XG5pbXBvcnQgeyBSZXN0UmVxdWVzdCB9IGZyb20gJy4vcmVzdC1yZXF1ZXN0JztcbmltcG9ydCB7IFJlc3RIZWFkZXJzIH0gZnJvbSAnLi9yZXN0LWhlYWRlcnMnO1xuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnLi9jb29raWUnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBpbnRlcnBvbGF0ZVBhcmFtc1RvVXJsLCBpc1ZhbGlkLCBjb250YWluc01vZGVscywgZ2V0TW9kZWxzIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgQ2lyYyB9IGZyb20gJ2pzb24xMC93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCdcblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuXG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZTxFLCBULCBUQT4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5FcnJvcnMgPSBuZXcgU3ViamVjdDxNb2RlbHMuQmFja2VuZEVycm9yPigpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9saXN0ZW5TdWNjZXNzID0gbmV3IFN1YmplY3Q8TW9kZWxzLkh0dHBSZXNwb25zZTxhbnk+PigpO1xuICBwdWJsaWMgc3RhdGljIGdldCBsaXN0ZW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3RlbkVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxpc3RlblN1Y2Nlc3NPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9saXN0ZW5TdWNjZXNzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZW5hYmxlV2FybmluZ3M6IGJvb2xlYW4gPSB0cnVlO1xuXG5cbiAgcHJpdmF0ZSBnZXRab25lKCkge1xuICAgIGNvbnN0IGlzTm9kZSA9ICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICBpZiAoaXNOb2RlKSB7IHJldHVybiB9O1xuICAgIGNvbnN0IG5nID0gd2luZG93WyduZyddO1xuICAgIGNvbnN0IGdldEFsbEFuZ3VsYXJSb290RWxlbWVudHMgPSB3aW5kb3dbJ2dldEFsbEFuZ3VsYXJSb290RWxlbWVudHMnXTtcbiAgICBpZiAoIW5nIHx8ICFnZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb2JlID0gbmcucHJvYmU7XG4gICAgY29uc3QgY29yZVRva2VucyA9IG5nLmNvcmVUb2tlbnM7XG4gICAgaWYgKCFjb3JlVG9rZW5zIHx8ICFjb3JlVG9rZW5zLk5nWm9uZSkgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lQ2xhc3MgPSBjb3JlVG9rZW5zLk5nWm9uZTtcbiAgICBpZiAoIXByb2JlIHx8IHR5cGVvZiBwcm9iZSAhPT0gJ2Z1bmN0aW9uJyB8fCAhZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cykgeyByZXR1cm47IH1cbiAgICBjb25zdCBhbmd1bGFyRWxlbWVudHM6IGFueVtdID0gZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cygpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhbmd1bGFyRWxlbWVudHMpIHx8IGFuZ3VsYXJFbGVtZW50cy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBuZy5wcm9iZShhbmd1bGFyRWxlbWVudHNbMF0pO1xuICAgIGlmICghcm9vdEVsZW1lbnQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgaW5qZWN0b3IgPSByb290RWxlbWVudC5pbmplY3RvcjtcbiAgICBpZiAoIWluamVjdG9yIHx8ICFpbmplY3Rvci5nZXQgfHwgdHlwZW9mIGluamVjdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH1cbiAgICBjb25zdCB6b25lID0gaW5qZWN0b3IuZ2V0KHpvbmVDbGFzcylcbiAgICByZXR1cm4gem9uZTtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBpbml0QW5ndWxhck5nWm9uZSh6b25lKSB7XG4gICAgUmVzdFJlcXVlc3Quem9uZSA9IHpvbmU7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTmVzdGVkTW9kZWxzKG1vZGVsOiBzdHJpbmcsIGFsbE1vZGVsczogT2JqZWN0KSB7XG5cbiAgICBmb3IgKGxldCBwIGluIGFsbE1vZGVscykge1xuICAgICAgaWYgKGFsbE1vZGVscy5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICBsZXQgbSA9IGFsbE1vZGVsc1twXTtcbiAgICAgICAgaWYgKGlzVmFsaWQocCkpIHtcbiAgICAgICAgICBsZXQgdXJsTW9kZWxzID0gZ2V0TW9kZWxzKHApO1xuICAgICAgICAgIGlmIChjb250YWluc01vZGVscyhtb2RlbCwgdXJsTW9kZWxzKSkge1xuICAgICAgICAgICAgbW9kZWwgPSBwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUmVzb3VyY2U8c3RyaW5nLCBhbnksIGFueT4oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgZW5kcG9pbnRzID0ge307XG4gIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWwoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZyk6IFJlc3Q8YW55PiB7XG4gICAgbW9kZWwgPSBSZXNvdXJjZS5wcmVwYXJlTW9kZWwobW9kZWwpO1xuICAgIGNvbnN0IGUgPSBSZXNvdXJjZS5lbmRwb2ludHNbZW5kcG9pbnRdO1xuICAgIGlmICghZSkgeyByZXR1cm4gdm9pZCAwOyB9XG4gICAgY29uc3QgciA9IFJlc291cmNlLmVuZHBvaW50c1tlbmRwb2ludF0ubW9kZWxzW21vZGVsXTtcbiAgICByZXR1cm4gUmVzb3VyY2UuZW5kcG9pbnRzW2VuZHBvaW50XS5tb2RlbHNbbW9kZWxdO1xuICB9XG4gIHByaXZhdGUgc3RhdGljIHJlcXVlc3Q6IFJlc3RSZXF1ZXN0ID0gbmV3IFJlc3RSZXF1ZXN0KCk7XG5cblxuXG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGU8QSwgVEEgPSBBW10+KFxuICAgIGU6IHN0cmluZyxcbiAgICBtb2RlbD86IHN0cmluZyxcbiAgICBlbnRpdHlNYXBwaW5nPzogTWFwcGluZy5NYXBwaW5nLFxuICAgIGNpcmN1bGFyPzogQ2lyY1tdLFxuICAgIGN1c3RvbUNvbnRlbnRUeXBlPzogUmVzdEhlYWRlcnMsXG4gICk6IE1vZGVscy5SZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgY29uc3QgYmFkUmVzdFJlZ0VYID0gbmV3IFJlZ0V4cCgnKChcXC86KVthLXpdKykrJywgJ2cnKTtcbiAgICBjb25zdCBtYXRjaEFyciA9IG1vZGVsLm1hdGNoKGJhZFJlc3RSZWdFWCkgfHwgW107XG4gICAgY29uc3QgYmFkTW9kZWxzTmV4dFRvRWFjaE90aGVyID0gbWF0Y2hBcnIuam9pbigpO1xuICAgIGNvbnN0IGF0bGVhczJEb3VibGVEb3RzID0gKChiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIubWF0Y2gobmV3IFJlZ0V4cCgnOicsICdnJykpIHx8IFtdKS5sZW5ndGggPj0gMik7XG4gICAgaWYgKGF0bGVhczJEb3VibGVEb3RzICYmIG1vZGVsLnNlYXJjaChiYWRNb2RlbHNOZXh0VG9FYWNoT3RoZXIpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcblxuQmFkIHJlc3QgbW9kZWw6ICR7bW9kZWx9XG5cbkRvIG5vdCBjcmVhdGUgcmVzdCBtb2RlbHMgbGlrZSB0aGlzOiAgICAvYm9vay9hdXRob3IvOmJvb2tpZC86YXV0aG9yaWRcbkluc3RlYWQgdXNlIG5lc3RlZCBhcHByb2FjaDogICAgICAgICAgICAvYm9vay86Ym9va2lkL2F1dGhvci86YXV0aG9yaWRcbiAgICAgICAgICAgIGApXG4gICAgfTtcbiAgICBSZXNvdXJjZS5tYXAoZSwgZSk7XG4gICAgUmVzb3VyY2UuaW5zdGFuY2UuYWRkKGUsIG1vZGVsID8gbW9kZWwgOiAnJywgZW50aXR5TWFwcGluZywgY2lyY3VsYXIsIGN1c3RvbUNvbnRlbnRUeXBlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBtb2RlbDogKHBhcmFtcz86IE9iamVjdCkgPT4gUmVzb3VyY2UuaW5zdGFuY2UuYXBpKFxuICAgICAgICBlLFxuICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtc1RvVXJsKHBhcmFtcywgbW9kZWwpXG4gICAgICApLFxuICAgICAgcmVwbGF5OiAobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkgPT4ge1xuICAgICAgICBSZXNvdXJjZS5nZXRNb2RlbChlLCBtb2RlbCkucmVwbGF5KG1ldGhvZCk7XG4gICAgICB9LFxuICAgICAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiBSZXNvdXJjZS5nZXRNb2RlbChlLCBtb2RlbCkuaGVhZGVycztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cbiAgcHVibGljIHN0YXRpYyByZXNldCgpIHtcbiAgICBSZXNvdXJjZS5lbmRwb2ludHMgPSB7fTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSgpO1xuICAgICAgaWYgKCFSZXN0UmVxdWVzdC56b25lKSB7IFJlc3RSZXF1ZXN0LnpvbmUgPSB6b25lIH07XG4gICAgfSlcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBDb29raWVzID0gQ29va2llLkluc3RhbmNlO1xuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWFwKGVuZHBvaW50OiBzdHJpbmcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsb2cuaSgndXJsJywgdXJsKVxuICAgIGxldCByZWdleCA9IC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6ezAsMX1cXHcqKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJSFcXC1cXC9dKSk/LztcbiAgICBsZXQgZSA9IGVuZHBvaW50O1xuICAgIGlmICghcmVnZXgudGVzdCh1cmwpKSB7XG4gICAgICB0aHJvdyBgVXJsIGFkZHJlc3MgaXMgbm90IGNvcnJlY3Q6ICR7dXJsfWA7XG4gICAgfVxuICAgIGlmICh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJy8nKSB1cmwgPSB1cmwuc2xpY2UoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgIGxvZy5pKCd1cmwgYWZ0ZXInLCB1cmwpXG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXSAhPT0gdm9pZCAwKSB7XG4gICAgICBIZWxwZXJzLmxvZygnQ2Fubm90IHVzZSBtYXAgZnVuY3Rpb24gYXQgdGhlIHNhbWUgQVBJIGVuZHBvaW50IGFnYWluICgnXG4gICAgICAgICsgUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybCArICcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFJlc291cmNlLmVuZHBvaW50c1tlXSA9IHtcbiAgICAgIHVybDogdXJsLFxuICAgICAgbW9kZWxzOiB7fSxcbiAgICAgIGVudGl0eTogbnVsbFxuICAgIH07XG4gICAgbG9nLmkoJ2VucG9pbnRzJywgUmVzb3VyY2UuZW5kcG9pbnRzKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cblxuICBwcml2YXRlIHN0YXRpYyBwcmVwYXJlTW9kZWwobW9kZWwpIHtcbiAgICBpZiAobW9kZWwuY2hhckF0KG1vZGVsLmxlbmd0aCAtIDEpID09PSAnLycpIG1vZGVsID0gbW9kZWwuc2xpY2UoMCwgbW9kZWwubGVuZ3RoIC0gMSk7XG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBBbmQgZW5pcG9pbnQgdG8gYXBwbGljYXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBwcml2YXRlIGFkZChlbmRwb2ludDogRSwgbW9kZWw6IHN0cmluZywgZW50aXR5OiBNYXBwaW5nLk1hcHBpbmcsIGNpcmN1bGFyPzogQ2lyY1tdLCBjdXN0b21Db250ZW50VHlwZT86IFJlc3RIZWFkZXJzKSB7XG4gICAgbG9nLmkoYEkgYW0gbWFwaW5nICR7bW9kZWx9IG9uICR7PGFueT5lbmRwb2ludH1gKTtcbiAgICBtb2RlbCA9IFJlc291cmNlLnByZXBhcmVNb2RlbChtb2RlbCk7XG5cbiAgICBsZXQgZTogc3RyaW5nO1xuICAgIGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0gPT09IHZvaWQgMCkge1xuICAgICAgY29uc29sZS5lcnJvcignRW5kcG9pbnQgaXMgbm90IG1hcHBlZCAhIENhbm5vdCBhZGQgbW9kZWwgJyArIG1vZGVsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFJlc291cmNlLmVuZHBvaW50c1tlXS5tb2RlbHNbbW9kZWxdICE9PSB2b2lkIDApIHtcbiAgICAgIGlmIChSZXNvdXJjZS5lbmFibGVXYXJuaW5ncykgY29uc29sZS53YXJuKGBNb2RlbCAnJHttb2RlbH0nIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBlbmRwb2ludDogYFxuICAgICAgICArIFJlc291cmNlLmVuZHBvaW50c1tlXS51cmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9XG4gICAgICBuZXcgUmVzdDxULCBUQT4oUmVzb3VyY2UuZW5kcG9pbnRzW2VdLnVybFxuICAgICAgICArICcvJyArIG1vZGVsLCBSZXNvdXJjZS5yZXF1ZXN0LCB7XG4gICAgICAgIGVuZHBvaW50OiBlLFxuICAgICAgICBwYXRoOiBtb2RlbCxcbiAgICAgICAgZW50aXR5LFxuICAgICAgICBjaXJjdWxhcixcbiAgICAgIH0sIGN1c3RvbUNvbnRlbnRUeXBlKTsgLy8gVE9ETyBwdXQgY3VzdG9tIGNvbnRlbnQgdHlwZSBpbiBtZXRhID9cbiAgICByZXR1cm47XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEFjY2VzcyBhcGkgdGhyb3VnaHQgZW5kcG9pbnRcbiAgICpcbiAgICogQHBhcmFtIHtFfSBlbmRwb2ludFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxcbiAgICogQHJldHVybnMge1Jlc3Q8VCwgVEE+fVxuICAgKi9cbiAgcHJpdmF0ZSBhcGkoZW5kcG9pbnQ6IEUsIG1vZGVsOiBzdHJpbmcpOiBSZXN0PFQsIFRBPiB7XG5cblxuXG5cblxuXG4gICAgaWYgKG1vZGVsLmNoYXJBdCgwKSA9PT0gJy8nKSBtb2RlbCA9IG1vZGVsLnNsaWNlKDEsIG1vZGVsLmxlbmd0aCk7XG4gICAgbGV0IGUgPSA8c3RyaW5nPihlbmRwb2ludCkudG9TdHJpbmcoKTtcbiAgICBpZiAoUmVzb3VyY2UuZW5kcG9pbnRzW2VdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IGBFbmRwb2ludDogJHs8YW55PmVuZHBvaW50fSBpcyBub3QgbWFwcGVkICEgQ2Fubm90IGFkZCBtb2RlbDogJHttb2RlbH1gO1xuICAgIH1cbiAgICBsZXQgYWxsTW9kZWxzOiBPYmplY3QgPSBSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzO1xuICAgIGxldCBvcmdNb2RlbCA9IG1vZGVsO1xuICAgIG1vZGVsID0gdGhpcy5jaGVja05lc3RlZE1vZGVscyhtb2RlbCwgYWxsTW9kZWxzKTtcblxuICAgIGlmIChSZXNvdXJjZS5lbmRwb2ludHNbZV0ubW9kZWxzW21vZGVsXSA9PT0gdm9pZCAwKSB7XG5cbiAgICAgIHRocm93IGBNb2RlbCAnJHttb2RlbH0nIGlzIHVuZGVmaW5lZCBpbiBlbmRwb2ludDogJHtSZXNvdXJjZS5lbmRwb2ludHNbZV0udXJsfSBgO1xuICAgIH1cblxuICAgIGxldCByZXM6IFJlc3Q8VCwgVEE+ID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS5tb2RlbHNbbW9kZWxdO1xuXG5cblxuXG5cblxuICAgIGlmIChvcmdNb2RlbCAhPT0gbW9kZWwpIHtcbiAgICAgIGxldCBiYXNlVXJsID0gUmVzb3VyY2UuZW5kcG9pbnRzWzxzdHJpbmc+KGVuZHBvaW50KS50b1N0cmluZygpXS51cmw7XG5cblxuXG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gYCR7YmFzZVVybH0vJHtvcmdNb2RlbH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuX19yZXN0X2VuZHBvaW50ID0gdm9pZCAwO1xuICAgIH07XG5cblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuXG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL3Jlc291cmNlLXNlcnZpY2UudHMiXX0=
@@ -126,4 +126,4 @@ export class RestHeaders {
126
126
  }
127
127
  ;
128
128
  ({}); // @--end-of-file-for-module=ng2-rest lib/rest-headers.ts
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL25nMi1yZXN0L3Byb2plY3RzL25nMi1yZXN0L3NyYy9saWIvcmVzdC1oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxXQUFXO0lBT2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUE0QjtRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUMsQ0FBQztTQUNmO1FBQ0QsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBb0IsT0FBK0Q7UUFibkYsNENBQTRDO1FBQzVDLGFBQVEsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM1QyxxREFBcUQ7UUFDckQscUJBQWdCLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFXaEQsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFnQixFQUFFLElBQVksRUFBRSxFQUFFO2dCQUNqRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUM1QyxNQUFNLE1BQU0sR0FBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUSxDQUFDO2dCQUNqRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHdCQUF3QixDQUFDLGFBQXFCO1FBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFJbEMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLElBQVk7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUE0RTtRQUNsRixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLElBQVk7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLElBQVksSUFBYSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RTs7T0FFRztJQUNILElBQUksS0FBZSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZFOztPQUVHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxLQUF3QjtRQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxRDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sS0FBaUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkU7O09BRUc7SUFFSCxNQUFNO1FBQ0osTUFBTSxVQUFVLEdBQWlDLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtTQUduQjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUtqRCxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RSxDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBWTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0NBQ0Y7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG4vKipcbiAqIEJhc2VkIG9uIEhlYWRlcnMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2h0dHAvc3JjL2hlYWRlcnMudHNcbiAqL1xuZXhwb3J0IHR5cGUgUmVzdEhlYWRlcnNPcHRpb25zID0gUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH1cblxuZXhwb3J0IGNsYXNzIFJlc3RIZWFkZXJzIHtcbiAgLyoqIEBpbnRlcm5hbCBoZWFkZXIgbmFtZXMgYXJlIGxvd2VyIGNhc2UgKi9cbiAgX2hlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcbiAgLyoqIEBpbnRlcm5hbCBtYXAgbG93ZXIgY2FzZSBuYW1lcyB0byBhY3R1YWwgbmFtZXMgKi9cbiAgX25vcm1hbGl6ZWROYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShoZWFkZXJzPzogUmVzdEhlYWRlcnNPcHRpb25zKSB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3RIZWFkZXJzKGhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihoZWFkZXJzPzogUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH0pIHtcbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIFJlc3RIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gKEFycmF5LmlzQXJyYXkoaGVhZGVyc1tuYW1lXSkgPyBoZWFkZXJzW25hbWVdIDogW2hlYWRlcnNbbmFtZV1dKSBhcyBhbnk7XG4gICAgICAgIHRoaXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgUmVzdEhlYWRlcnMgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gRE9NU3RyaW5nIG9mIFJlc3BvbnNlIFJlc3RIZWFkZXJzXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nKGhlYWRlcnNTdHJpbmc6IHN0cmluZyk6IFJlc3RIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IFJlc3RIZWFkZXJzKCk7XG5cblxuXG4gICAgaGVhZGVyc1N0cmluZy5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBsaW5lLnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsaW5lLnNsaWNlKGluZGV4ICsgMSkudHJpbSgpO1xuICAgICAgICBoZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIGEgaGVhZGVyIHRvIGV4aXN0aW5nIGxpc3Qgb2YgaGVhZGVyIHZhbHVlcyBmb3IgYSBnaXZlbiBoZWFkZXIgbmFtZS5cbiAgICovXG4gIGFwcGVuZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEFsbChuYW1lKTtcblxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBoZWFkZXIgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGRlbGV0ZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBsY05hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fbm9ybWFsaXplZE5hbWVzLmRlbGV0ZShsY05hbWUpO1xuICAgIHRoaXMuX2hlYWRlcnMuZGVsZXRlKGxjTmFtZSk7XG4gIH1cblxuICBmb3JFYWNoKGZuOiAodmFsdWVzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBoZWFkZXJzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJzLmZvckVhY2goXG4gICAgICAodmFsdWVzLCBsY05hbWUpID0+IGZuKHZhbHVlcywgdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChsY05hbWUpLCB0aGlzLl9oZWFkZXJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBmaXJzdCBoZWFkZXIgdGhhdCBtYXRjaGVzIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEFsbChuYW1lKTtcblxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID4gMCA/IHZhbHVlc1swXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBleGlzdGVuY2Ugb2YgaGVhZGVyIGJ5IGdpdmVuIG5hbWUuXG4gICAqL1xuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oZWFkZXJzLmhhcyhuYW1lLnRvTG93ZXJDYXNlKCkpOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBoZWFkZXJzXG4gICAqL1xuICBrZXlzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKTsgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG9yIG92ZXJyaWRlcyBoZWFkZXIgdmFsdWUgZm9yIGdpdmVuIG5hbWUuXG4gICAqL1xuICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5faGVhZGVycy5zZXQobmFtZS50b0xvd2VyQ2FzZSgpLCBbdmFsdWUuam9pbignLCcpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hlYWRlcnMuc2V0KG5hbWUudG9Mb3dlckNhc2UoKSwgW3ZhbHVlXSk7XG4gICAgfVxuICAgIHRoaXMubWF5QmVTZXROb3JtYWxpemVkTmFtZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHZhbHVlcyBvZiBhbGwgaGVhZGVycy5cbiAgICovXG4gIHZhbHVlcygpOiBzdHJpbmdbXVtdIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5faGVhZGVycy52YWx1ZXMoKSk7IH1cblxuICAvKipcbiAgICogUmV0dXJucyBzdHJpbmcgb2YgYWxsIGhlYWRlcnMuXG4gICAqL1xuXG4gIHRvSlNPTigpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICghdGhpcy5faGVhZGVycykge1xuXG5cbiAgICB9XG5cbiAgICB0aGlzLl9oZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc3BsaXQ6IHN0cmluZ1tdID0gW107XG4gICAgICB2YWx1ZXMuZm9yRWFjaCh2ID0+IHNwbGl0LnB1c2goLi4udi5zcGxpdCgnLCcpKSk7XG5cblxuXG5cbiAgICAgIHNlcmlhbGl6ZWRbdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChuYW1lKV0gPSBzcGxpdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZXJpYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMuX2hlYWRlcnMuZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghdGhpcy5fbm9ybWFsaXplZE5hbWVzLmhhcyhsY05hbWUpKSB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGxjTmFtZSwgbmFtZSk7XG4gICAgfVxuICB9XG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9yZXN0LWhlYWRlcnMudHMiXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL25nMi1yZXN0L3Byb2plY3RzL25nMi1yZXN0L3NyYy9saWIvcmVzdC1oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxXQUFXO0lBT2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUE0QjtRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFvQixPQUErRDtRQWJuRiw0Q0FBNEM7UUFDNUMsYUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVDLHFEQUFxRDtRQUNyRCxxQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVdoRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxJQUFZLEVBQUUsRUFBRTtnQkFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sTUFBTSxHQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8s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LENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RSxDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBWTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5REFBeUQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuLyoqXG4gKiBCYXNlZCBvbiBIZWFkZXJzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9wYWNrYWdlcy9odHRwL3NyYy9oZWFkZXJzLnRzXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3RIZWFkZXJzT3B0aW9ucyA9IFJlc3RIZWFkZXJzIHwgeyBbbmFtZTogc3RyaW5nXTogKHN0cmluZyB8IHN0cmluZ1tdKSB9XG5cbmV4cG9ydCBjbGFzcyBSZXN0SGVhZGVycyB7XG4gIC8qKiBAaW50ZXJuYWwgaGVhZGVyIG5hbWVzIGFyZSBsb3dlciBjYXNlICovXG4gIF9oZWFkZXJzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4gPSBuZXcgTWFwKCk7XG4gIC8qKiBAaW50ZXJuYWwgbWFwIGxvd2VyIGNhc2UgbmFtZXMgdG8gYWN0dWFsIG5hbWVzICovXG4gIF9ub3JtYWxpemVkTmFtZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5cblxuICBwdWJsaWMgc3RhdGljIGZyb20oaGVhZGVycz86IFJlc3RIZWFkZXJzT3B0aW9ucykge1xuICAgIGlmICghaGVhZGVycykge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSZXN0SGVhZGVycyhoZWFkZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoaGVhZGVycz86IFJlc3RIZWFkZXJzIHwgeyBbbmFtZTogc3RyaW5nXTogKHN0cmluZyB8IHN0cmluZ1tdKSB9KSB7XG4gICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBSZXN0SGVhZGVycykge1xuICAgICAgaGVhZGVycy5mb3JFYWNoKCh2YWx1ZXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4gdGhpcy5zZXQobmFtZSwgdmFsdWUpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyhoZWFkZXJzKS5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IChBcnJheS5pc0FycmF5KGhlYWRlcnNbbmFtZV0pID8gaGVhZGVyc1tuYW1lXSA6IFtoZWFkZXJzW25hbWVdXSkgYXMgYW55O1xuICAgICAgICB0aGlzLmRlbGV0ZShuYW1lKTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4gdGhpcy5zZXQobmFtZSwgdmFsdWUpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IFJlc3RIZWFkZXJzIGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIERPTVN0cmluZyBvZiBSZXNwb25zZSBSZXN0SGVhZGVyc1xuICAgKi9cbiAgc3RhdGljIGZyb21SZXNwb25zZUhlYWRlclN0cmluZyhoZWFkZXJzU3RyaW5nOiBzdHJpbmcpOiBSZXN0SGVhZGVycyB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBSZXN0SGVhZGVycygpO1xuXG5cblxuICAgIGhlYWRlcnNTdHJpbmcuc3BsaXQoJ1xcbicpLmZvckVhY2gobGluZSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCBuYW1lID0gbGluZS5zbGljZSgwLCBpbmRleCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbGluZS5zbGljZShpbmRleCArIDEpLnRyaW0oKTtcbiAgICAgICAgaGVhZGVycy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyBhIGhlYWRlciB0byBleGlzdGluZyBsaXN0IG9mIGhlYWRlciB2YWx1ZXMgZm9yIGEgZ2l2ZW4gaGVhZGVyIG5hbWUuXG4gICAqL1xuICBhcHBlbmQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRBbGwobmFtZSk7XG5cbiAgICBpZiAodmFsdWVzID09PSBudWxsKSB7XG4gICAgICB0aGlzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgaGVhZGVyIHZhbHVlcyBmb3IgdGhlIGdpdmVuIG5hbWUuXG4gICAqL1xuICBkZWxldGUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbGNOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX25vcm1hbGl6ZWROYW1lcy5kZWxldGUobGNOYW1lKTtcbiAgICB0aGlzLl9oZWFkZXJzLmRlbGV0ZShsY05hbWUpO1xuICB9XG5cbiAgZm9yRWFjaChmbjogKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZywgaGVhZGVyczogTWFwPHN0cmluZywgc3RyaW5nW10+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVycy5mb3JFYWNoKFxuICAgICAgKHZhbHVlcywgbGNOYW1lKSA9PiBmbih2YWx1ZXMsIHRoaXMuX25vcm1hbGl6ZWROYW1lcy5nZXQobGNOYW1lKSwgdGhpcy5faGVhZGVycykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZmlyc3QgaGVhZGVyIHRoYXQgbWF0Y2hlcyBnaXZlbiBuYW1lLlxuICAgKi9cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXRBbGwobmFtZSk7XG5cbiAgICBpZiAodmFsdWVzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCA+IDAgPyB2YWx1ZXNbMF0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBmb3IgZXhpc3RlbmNlIG9mIGhlYWRlciBieSBnaXZlbiBuYW1lLlxuICAgKi9cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGVhZGVycy5oYXMobmFtZS50b0xvd2VyQ2FzZSgpKTsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuYW1lcyBvZiB0aGUgaGVhZGVyc1xuICAgKi9cbiAga2V5cygpOiBzdHJpbmdbXSB7IHJldHVybiBBcnJheS5mcm9tKHRoaXMuX25vcm1hbGl6ZWROYW1lcy52YWx1ZXMoKSk7IH1cblxuICAvKipcbiAgICogU2V0cyBvciBvdmVycmlkZXMgaGVhZGVyIHZhbHVlIGZvciBnaXZlbiBuYW1lLlxuICAgKi9cbiAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX2hlYWRlcnMuc2V0KG5hbWUudG9Mb3dlckNhc2UoKSwgW3ZhbHVlLmpvaW4oJywnKV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkZXJzLnNldChuYW1lLnRvTG93ZXJDYXNlKCksIFt2YWx1ZV0pO1xuICAgIH1cbiAgICB0aGlzLm1heUJlU2V0Tm9ybWFsaXplZE5hbWUobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB2YWx1ZXMgb2YgYWxsIGhlYWRlcnMuXG4gICAqL1xuICB2YWx1ZXMoKTogc3RyaW5nW11bXSB7IHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2hlYWRlcnMudmFsdWVzKCkpOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgc3RyaW5nIG9mIGFsbCBoZWFkZXJzLlxuICAgKi9cblxuICB0b0pTT04oKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQ6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcbiAgICBpZiAoIXRoaXMuX2hlYWRlcnMpIHtcblxuXG4gICAgfVxuXG4gICAgdGhpcy5faGVhZGVycy5mb3JFYWNoKCh2YWx1ZXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNwbGl0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgdmFsdWVzLmZvckVhY2godiA9PiBzcGxpdC5wdXNoKC4uLnYuc3BsaXQoJywnKSkpO1xuXG5cblxuXG4gICAgICBzZXJpYWxpemVkW3RoaXMuX25vcm1hbGl6ZWROYW1lcy5nZXQobmFtZSldID0gc3BsaXQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGxpc3Qgb2YgaGVhZGVyIHZhbHVlcyBmb3IgYSBnaXZlbiBuYW1lLlxuICAgKi9cbiAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLl9oZWFkZXJzLmdldChuYW1lLnRvTG93ZXJDYXNlKCkpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgbWF5QmVTZXROb3JtYWxpemVkTmFtZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBsY05hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIXRoaXMuX25vcm1hbGl6ZWROYW1lcy5oYXMobGNOYW1lKSkge1xuICAgICAgdGhpcy5fbm9ybWFsaXplZE5hbWVzLnNldChsY05hbWUsIG5hbWUpO1xuICAgIH1cbiAgfVxufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdCBsaWIvcmVzdC1oZWFkZXJzLnRzIl19
@@ -14,7 +14,7 @@ const jobIDkey = 'jobID';
14
14
  const customObs = 'customObs';
15
15
  const cancelFn = 'cancelFn';
16
16
  const isCanceled = 'isCanceled';
17
- class RestRequest {
17
+ export class RestRequest {
18
18
  constructor() {
19
19
  this.subjectInuUse = {};
20
20
  this.meta = {};
@@ -317,7 +317,6 @@ class RestRequest {
317
317
  setTimeout(() => this.req(url, method, headers, body, replay.id, isArray));
318
318
  }
319
319
  }
320
- export { RestRequest };
321
320
  ;
322
321
  ({}); // @--end-of-file-for-module=ng2-rest lib/rest-request.ts
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL25nMi1yZXN0L3Byb2plY3RzL25nMi1yZXN0L3NyYy9saWIvcmVzdC1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUM1QyxLQUFLLENBQUMsU0FBUyxDQUNsQixDQUFBO0FBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUM5QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUIsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDO0FBS2hDLE1BQWEsV0FBVztJQUF4QjtRQUlVLGtCQUFhLEdBQW1DLEVBQUUsQ0FBQztRQUNu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c0JBQXNCLE1BQU0saUJBQWlCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEYsT0FBTztTQUNSO1FBQUEsQ0FBQztRQUNGLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNyRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLE1BQU0saUJBQWlCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEYsT0FBTztTQUNSO1FBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUM1RSxDQUFDOztTQTdiVSxXQUFXO0FBaWN2QixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZS1zZXJ2aWNlJztcbmltcG9ydCB7IExvZywgTG9nZ2VyIH0gZnJvbSAnbmcyLWxvZ2dlci93ZWJzcWwnO1xuXG5pbXBvcnQgeyBSZXF1ZXN0Q2FjaGUgfSBmcm9tICcuL3JlcXVlc3QtY2FjaGUnO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnW25nMi1yZXN0XSByZXN0LXJlcXVlc3QnXG4gICwgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmNvbnN0IGpvYklEa2V5ID0gJ2pvYklEJztcbmNvbnN0IGN1c3RvbU9icyA9ICdjdXN0b21PYnMnO1xuY29uc3QgY2FuY2VsRm4gPSAnY2FuY2VsRm4nO1xuY29uc3QgaXNDYW5jZWxlZCA9ICdpc0NhbmNlbGVkJztcblxuXG5cblxuZXhwb3J0IGNsYXNzIFJlc3RSZXF1ZXN0IHtcblxuICBwdWJsaWMgc3RhdGljIHpvbmU7XG4gIHByaXZhdGUgc3RhdGljIGpvYklkID0gMDtcbiAgcHJpdmF0ZSBzdWJqZWN0SW51VXNlOiB7IFtpZDogbnVtYmVyXTogU3ViamVjdDxhbnk+IH0gPSB7fTtcbiAgcHJpdmF0ZSBtZXRhOiB7IFtpZDogbnVtYmVyXTogTW9kZWxzLk1ldGFSZXF1ZXN0IH0gPSB7fTtcblxuXG4gIHByaXZhdGUgaGFuZGxlclJlc3VsdChvcHRpb25zOiBNb2RlbHMuSGFuZGxlUmVzdWx0T3B0aW9ucyxcbiAgICBzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgICAgb3B0aW9ucyA9IHt9IGFzIGFueTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlcywgam9iaWQsIGlzQXJyYXksIG1ldGhvZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICh0eXBlb2YgcmVzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZXNwb3Nuc2UgZm9yIHJlcXVlc3QuICcpO1xuICAgIH1cblxuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgcmVzLmhlYWRlcnMgPSBSZXN0SGVhZGVycy5mcm9tKHJlcy5oZWFkZXJzKTtcbiAgICB9XG5cblxuICAgIGlmIChyZXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0uZXJyb3IobmV3IE1vZGVscy5IdHRwUmVzcG9uc2VFcnJvcihyZXMuZXJyb3IsIHJlcy5kYXRhLCByZXMuaGVhZGVycywgcmVzLmNvZGUsIGpvYmlkKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMubWV0YVtqb2JpZF0uZW50aXR5O1xuICAgIGNvbnN0IGNpcmN1bGFyID0gdGhpcy5tZXRhW2pvYmlkXS5jaXJjdWxhcjtcblxuICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KVxuXG4gICAgY29uc3QgcmVxUmVzcCA9IG5ldyBNb2RlbHMuSHR0cFJlc3BvbnNlKHNvdXJjZVJlcXVlc3QsIHJlcy5kYXRhLCByZXMuaGVhZGVycywgcmVzLmNvZGUsIGVudGl0eSwgY2lyY3VsYXIsIGpvYmlkLCBpc0FycmF5KTtcbiAgICBzdWNjZXNzLm5leHQocmVxUmVzcCk7XG5cbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQocmVxUmVzcCk7XG4gICAgdGhpcy5tZXRhW2pvYmlkXSA9IHZvaWQgMDtcbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLmNvbXBsZXRlKCk7XG4gIH1cbiAgY2hlY2tDYWNoZShzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMsIGpvYmlkOiBudW1iZXIpIHtcbiAgICBjb25zdCBleGlzdGVkSW5DYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoc291cmNlUmVxdWVzdCk7XG4gICAgaWYgKGV4aXN0ZWRJbkNhY2hlKSB7XG5cbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KTtcbiAgICAgIHN1Y2Nlc3MubmV4dChleGlzdGVkSW5DYWNoZS5yZXNwb25zZSk7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQoZXhpc3RlZEluQ2FjaGUpO1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXEoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgYm9keT86IGFueSxcbiAgICBqb2JpZD86IG51bWJlcixcbiAgICBpc0FycmF5ID0gZmFsc2UsXG4gICAgbW9ja0h0dHA/OiBNb2RlbHMuTW9ja0h0dHBcbiAgKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZFxuICAgIH0sIGpvYmlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IENhbmNlbFRva2VuID0gYXhpb3MuQ2FuY2VsVG9rZW47XG4gICAgY29uc3Qgc291cmNlID0gQ2FuY2VsVG9rZW4uc291cmNlKCk7XG4gICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjYW5jZWxGbl0gPSBzb3VyY2UuY2FuY2VsO1xuXG4gICAgdmFyIHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPGFueT47XG4gICAgaWYgKG1vY2tIdHRwKSB7XG5cbiAgICAgIGlmICh0eXBlb2YgbW9ja0h0dHAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IG1vY2tIdHRwLmRhdGEsXG4gICAgICAgICAgc3RhdHVzOiBtb2NrSHR0cC5jb2RlLFxuICAgICAgICAgIGhlYWRlcnM6IG1vY2tIdHRwLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgIHN0YXR1c1RleHQ6IG1vY2tIdHRwLmVycm9yLFxuICAgICAgICAgIGNvbmZpZzoge30gYXMgYW55XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vY2tIdHRwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBtb2NrSHR0cCh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSk7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IHIuZGF0YSxcbiAgICAgICAgICBzdGF0dXM6IHIuY29kZSxcbiAgICAgICAgICBoZWFkZXJzOiByLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHIuZXJyb3IsXG4gICAgICAgICAgY29uZmlnOiB7fSBhcyBhbnlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuXG4gICAgY29uc3QgaGVhZGVyc0pzb24gPSBoZWFkZXJzLnRvSlNPTigpO1xuICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGhlYWRlcnNKc29uLnJlc3BvbnNldHlwZWF4aW9zID8gaGVhZGVyc0pzb24ucmVzcG9uc2V0eXBlYXhpb3MgOiAndGV4dCc7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFyZXNwb25zZSkge1xuXG5cblxuXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgZGF0YTogYm9keSxcbiAgICAgICAgICByZXNwb25zZVR5cGUsXG4gICAgICAgICAgaGVhZGVyczogaGVhZGVyc0pzb24sXG4gICAgICAgICAgY2FuY2VsVG9rZW46IHNvdXJjZS50b2tlbixcblxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG5cblxuICAgICAgaWYgKHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICByZXM6IHtcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5zdGF0dXMgYXMgYW55LFxuICAgICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMgYXMgYW55KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGpvYmlkLFxuICAgICAgICBpc0FycmF5XG4gICAgICB9LCB7XG4gICAgICAgIHVybCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBpc0FycmF5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F0Y2hlZEVycm9yKSB7XG4gICAgICBpZiAodGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cblxuICAgICAgaWYgKHR5cGVvZiBjYXRjaGVkRXJyb3IgPT09ICdvYmplY3QnICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBjb25zdCBlcnIgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YTtcbiAgICAgICAgY29uc3QgbXNnOiBzdHJpbmcgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlIHx8ICcnO1xuXG5cblxuICAgICAgICBsZXQgc3RhY2s6IHN0cmluZ1tdID0gKGVyci5zdGFjayB8fCAnJykuc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgIGNvbnN0IGVyck9icyA9IChSZXNvdXJjZVsnX2xpc3RlbkVycm9ycyddIGFzIFN1YmplY3Q8TW9kZWxzLkJhY2tlbmRFcnJvcj4pO1xuICAgICAgICBlcnJPYnMubmV4dCh7XG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGRhdGE6IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBgWyR7Y2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1c1RleHR9XTogYCA6ICcnO1xuICAgICAgdGhpcy5oYW5kbGVyUmVzdWx0KHtcbiAgICAgICAgcmVzOiB7XG4gICAgICAgICAgY29kZTogKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UpID8gY2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1cyBhcyBhbnkgOiB2b2lkIDAsXG4gICAgICAgICAgZXJyb3I6IGAke2Vycm9yfSR7Y2F0Y2hlZEVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICBkYXRhOiAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBKU09OLnN0cmluZ2lmeShjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkgOiB2b2lkIDAsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlLmhlYWRlcnMpXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgam9iaWQsXG4gICAgICAgIGlzQXJyYXlcbiAgICAgIH0sIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBib2R5LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBtZXRob2RcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwbGF5KG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCwgb25seUdldExhc3RSZXBsYXlGb3JNZXRob2Q6IGJvb2xlYW4pOiBNb2RlbHMuUmVwbGF5RGF0YSB7XG4gICAgbGV0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGE7XG5cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF0pKSB7XG5cbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF0gPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdKSkge1xuXG4gICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF0gPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF0pKSB7XG5cbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdID0ge307XG4gICAgfVxuXG5cbiAgICBjb25zdCBvYmplY3RJRFRvQ3JlYXRlT3JMYXN0ID0gKE9iamVjdC5rZXlzKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdIGFzIE9iamVjdCkubGVuZ3RoKSArXG4gICAgICAob25seUdldExhc3RSZXBsYXlGb3JNZXRob2QgPyAwIDogMSk7XG4gICAgaWYgKG9ubHlHZXRMYXN0UmVwbGF5Rm9yTWV0aG9kICYmIChvYmplY3RJRFRvQ3JlYXRlT3JMYXN0ID09PSAwKSkge1xuICAgICAgcmV0dXJuIHJlcGxheTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVtvYmplY3RJRFRvQ3JlYXRlT3JMYXN0XSkpIHtcblxuICAgICAgdGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF1bb2JqZWN0SURUb0NyZWF0ZU9yTGFzdF0gPSA8TW9kZWxzLlJlcGxheURhdGE+e1xuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpLFxuICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJlcGxheSA9IHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdW29iamVjdElEVG9DcmVhdGVPckxhc3RdO1xuXG4gICAgaWYgKCFfLmlzTnVtYmVyKHJlcGxheS5pZCkpIHtcbiAgICAgIGlmIChSZXN0UmVxdWVzdC5qb2JJZCA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgUmVzdFJlcXVlc3Quam9iSWQgPSAwO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBqb2JpZDogbnVtYmVyID0gUmVzdFJlcXVlc3Quam9iSWQrKztcbiAgICAgIHJlcGxheS5pZCA9IGpvYmlkO1xuICAgICAgY29uc3Qgc3ViamVjdDogU3ViamVjdDxhbnk+ID0gcmVwbGF5LnN1YmplY3Q7XG4gICAgICBzdWJqZWN0W2pvYklEa2V5XSA9IGpvYmlkOyAvLyBtb2RpZnkgaW50ZXJuYWwgcnhqcyBzdWJqZWN0IG9ialxuXG4gICAgICB0aGlzLm1ldGFbam9iaWRdID0gbWV0YTtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0gPSBzdWJqZWN0O1xuXG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2N1c3RvbU9ic10gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcblxuXG5cbiAgICAgICAgb2JzZXJ2ZXIuYWRkKCgpID0+IHtcblxuICAgICAgICAgIGlmICghdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dKCdbbmcyLXJlc3RdIG9uIHB1cnBvc2UgY2FuY2VsZWQgaHR0cCByZXF1ZXN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc3ViID0gc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGEgPT4gb2JzZXJ2ZXIubmV4dChhKSxcbiAgICAgICAgICBlcnJvcjogYSA9PiBvYnNlcnZlci5lcnJvcihhKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgIH1cblxuICAgIHJldHVybiByZXBsYXk7XG4gIH1cblxuXG5cblxuICBwcml2YXRlIGdlbmVyYWxSZXEoXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheShtZXRob2QsIG1ldGEsIGZhbHNlKTtcbiAgICByZXBsYXkuZGF0YSA9IHsgdXJsLCBib2R5LCBoZWFkZXJzLCBpc0FycmF5IH07XG5cbiAgICAoKHB0aGlzLCBwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkgPT4ge1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHB0aGlzLnJlcShwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkpO1xuICAgIH0pKHRoaXMsIHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXBsYXkuaWQsIGlzQXJyYXksIG1vY2tIdHRwKVxuXG4gICAgY29uc3QgcmVzcDogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4gPSBmaXJzdFZhbHVlRnJvbShyZXBsYXkuc3ViamVjdFtjdXN0b21PYnNdKSBhcyBhbnk7XG4gICAgcmVzcC5vYnNlcnZhYmxlID0gcmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXTtcbiAgICByZXNwLmNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeSh7XG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybFxuICAgIH0pO1xuICAgIHJldHVybiByZXNwO1xuICB9XG5cbiAgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbiwgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgnZ2V0JywgdXJsLCBib2R5LCBoZWFkZXJzLCBtZXRhLCBpc0FycmF5LCBtb2NrSHR0cCk7XG4gIH1cblxuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbiwgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgnaGVhZCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2RlbGV0ZScsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncG9zdCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdwdXQnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdwYXRjaCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAganNvbnAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLFxuICAgIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICAgIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuXG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KCdqc29ucCcsIG1ldGEsIGZhbHNlKTtcbiAgICBjb25zdCBqb2JpZCA9IHJlcGxheS5pZDtcbiAgICBjb25zdCBtZXRob2QgPSAnanNvbnAnXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMSlcbiAgICAgIGxldCBudW0gPSBNYXRoLnJvdW5kKDEwMDAwICogTWF0aC5yYW5kb20oKSk7XG4gICAgICBsZXQgY2FsbGJhY2tNZXRob2ROYW1lID0gXCJjYl9cIiArIG51bTtcbiAgICAgIHdpbmRvd1tjYWxsYmFja01ldGhvZE5hbWVdID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBtZXRob2RcbiAgICAgICAgfSwgam9iaWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlclJlc3VsdCh7XG4gICAgICAgICAgcmVzOiB7XG4gICAgICAgICAgICBkYXRhLCBpc0FycmF5XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgam9iaWQsXG4gICAgICAgICAgaXNBcnJheVxuICAgICAgICB9LCB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBsZXQgc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjLnNyYyA9IGAke3VybH0/Y2FsbGJhY2s9JHtjYWxsYmFja01ldGhvZE5hbWV9YDtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2MpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzYyk7XG4gICAgfSlcblxuICAgIGNvbnN0IHJlc3A6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+ID0gZmlyc3RWYWx1ZUZyb20ocmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXSkgYXMgYW55O1xuICAgIHJlc3Aub2JzZXJ2YWJsZSA9IHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic107XG4gICAgY29uc29sZS5sb2coJ2Fzc2lnaW5nIGN1c3RvbSBvYnNlcnZhYmxlJylcbiAgICByZXNwLmNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeSh7XG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybFxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cblxuICBwcml2YXRlIHJlcGxheVN1YmplY3RzID0ge307XG4gIHB1YmxpYyByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCwgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0KSB7XG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KG1ldGhvZCwgbWV0YSwgdHJ1ZSk7XG4gICAgaWYgKCFyZXBsYXkgfHwgIXJlcGxheS5kYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vIHJlcGxheSBmaXJzdCAke21ldGhvZH0gcmVxdWVzdCBmcm9tICR7bWV0YS5lbmRwb2ludH0vJHttZXRhLnBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfTtcbiAgICBpZiAocmVwbGF5ICYmIHJlcGxheS5zdWJqZWN0ICYmIEFycmF5LmlzQXJyYXkocmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzKSAmJlxuICAgICAgcmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKGBObyBvYnNlcnZhdG9ycyBmb3IgJHttZXRob2R9IHJlcXVlc3QgZnJvbSAke21ldGEuZW5kcG9pbnR9LyR7bWV0YS5wYXRofWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSByZXBsYXkuZGF0YS51cmw7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcGxheS5kYXRhLmhlYWRlcnM7XG4gICAgY29uc3QgYm9keSA9IHJlcGxheS5kYXRhLmJvZHk7XG4gICAgY29uc3QgaXNBcnJheSA9IHJlcGxheS5kYXRhLmlzQXJyYXk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlcSh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5KSlcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdCBsaWIvcmVzdC1yZXF1ZXN0LnRzIl19
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL25nMi1yZXN0L3Byb2plY3RzL25nMi1yZXN0L3NyYy9saWIvcmVzdC1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUM1QyxLQUFLLENBQUMsU0FBUyxDQUNsQixDQUFBO0FBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUM5QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUIsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDO0FBS2hDLE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBSVUsa0JBQWEsR0FBbUMsRUFBRSxDQUFD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RSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDNUUsQ0FBQzs7QUFJRixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzdEhlYWRlcnMgfSBmcm9tICcuL3Jlc3QtaGVhZGVycyc7XG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZS1zZXJ2aWNlJztcbmltcG9ydCB7IExvZywgTG9nZ2VyIH0gZnJvbSAnbmcyLWxvZ2dlci93ZWJzcWwnO1xuXG5pbXBvcnQgeyBSZXF1ZXN0Q2FjaGUgfSBmcm9tICcuL3JlcXVlc3QtY2FjaGUnO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnW25nMi1yZXN0XSByZXN0LXJlcXVlc3QnXG4gICwgTGV2ZWwuX19OT1RISU5HXG4pXG5cbmNvbnN0IGpvYklEa2V5ID0gJ2pvYklEJztcbmNvbnN0IGN1c3RvbU9icyA9ICdjdXN0b21PYnMnO1xuY29uc3QgY2FuY2VsRm4gPSAnY2FuY2VsRm4nO1xuY29uc3QgaXNDYW5jZWxlZCA9ICdpc0NhbmNlbGVkJztcblxuXG5cblxuZXhwb3J0IGNsYXNzIFJlc3RSZXF1ZXN0IHtcblxuICBwdWJsaWMgc3RhdGljIHpvbmU7XG4gIHByaXZhdGUgc3RhdGljIGpvYklkID0gMDtcbiAgcHJpdmF0ZSBzdWJqZWN0SW51VXNlOiB7IFtpZDogbnVtYmVyXTogU3ViamVjdDxhbnk+IH0gPSB7fTtcbiAgcHJpdmF0ZSBtZXRhOiB7IFtpZDogbnVtYmVyXTogTW9kZWxzLk1ldGFSZXF1ZXN0IH0gPSB7fTtcblxuXG4gIHByaXZhdGUgaGFuZGxlclJlc3VsdChvcHRpb25zOiBNb2RlbHMuSGFuZGxlUmVzdWx0T3B0aW9ucyxcbiAgICBzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zKSkge1xuICAgICAgb3B0aW9ucyA9IHt9IGFzIGFueTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlcywgam9iaWQsIGlzQXJyYXksIG1ldGhvZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICh0eXBlb2YgcmVzICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZXNwb3Nuc2UgZm9yIHJlcXVlc3QuICcpO1xuICAgIH1cblxuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgcmVzLmhlYWRlcnMgPSBSZXN0SGVhZGVycy5mcm9tKHJlcy5oZWFkZXJzKTtcbiAgICB9XG5cblxuICAgIGlmIChyZXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0uZXJyb3IobmV3IE1vZGVscy5IdHRwUmVzcG9uc2VFcnJvcihyZXMuZXJyb3IsIHJlcy5kYXRhLCByZXMuaGVhZGVycywgcmVzLmNvZGUsIGpvYmlkKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMubWV0YVtqb2JpZF0uZW50aXR5O1xuICAgIGNvbnN0IGNpcmN1bGFyID0gdGhpcy5tZXRhW2pvYmlkXS5jaXJjdWxhcjtcblxuICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KVxuXG4gICAgY29uc3QgcmVxUmVzcCA9IG5ldyBNb2RlbHMuSHR0cFJlc3BvbnNlKHNvdXJjZVJlcXVlc3QsIHJlcy5kYXRhLCByZXMuaGVhZGVycywgcmVzLmNvZGUsIGVudGl0eSwgY2lyY3VsYXIsIGpvYmlkLCBpc0FycmF5KTtcbiAgICBzdWNjZXNzLm5leHQocmVxUmVzcCk7XG5cbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQocmVxUmVzcCk7XG4gICAgdGhpcy5tZXRhW2pvYmlkXSA9IHZvaWQgMDtcbiAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLmNvbXBsZXRlKCk7XG4gIH1cbiAgY2hlY2tDYWNoZShzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMsIGpvYmlkOiBudW1iZXIpIHtcbiAgICBjb25zdCBleGlzdGVkSW5DYWNoZSA9IFJlcXVlc3RDYWNoZS5maW5kQnkoc291cmNlUmVxdWVzdCk7XG4gICAgaWYgKGV4aXN0ZWRJbkNhY2hlKSB7XG5cbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAoUmVzb3VyY2VbJ19saXN0ZW5TdWNjZXNzJ10gYXMgU3ViamVjdDxNb2RlbHMuSHR0cFJlc3BvbnNlPGFueT4+KTtcbiAgICAgIHN1Y2Nlc3MubmV4dChleGlzdGVkSW5DYWNoZS5yZXNwb25zZSk7XG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdLm5leHQoZXhpc3RlZEluQ2FjaGUpO1xuICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXS5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXEoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgYm9keT86IGFueSxcbiAgICBqb2JpZD86IG51bWJlcixcbiAgICBpc0FycmF5ID0gZmFsc2UsXG4gICAgbW9ja0h0dHA/OiBNb2RlbHMuTW9ja0h0dHBcbiAgKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZFxuICAgIH0sIGpvYmlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IENhbmNlbFRva2VuID0gYXhpb3MuQ2FuY2VsVG9rZW47XG4gICAgY29uc3Qgc291cmNlID0gQ2FuY2VsVG9rZW4uc291cmNlKCk7XG4gICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtjYW5jZWxGbl0gPSBzb3VyY2UuY2FuY2VsO1xuXG4gICAgdmFyIHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPGFueT47XG4gICAgaWYgKG1vY2tIdHRwKSB7XG5cbiAgICAgIGlmICh0eXBlb2YgbW9ja0h0dHAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IG1vY2tIdHRwLmRhdGEsXG4gICAgICAgICAgc3RhdHVzOiBtb2NrSHR0cC5jb2RlLFxuICAgICAgICAgIGhlYWRlcnM6IG1vY2tIdHRwLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgIHN0YXR1c1RleHQ6IG1vY2tIdHRwLmVycm9yLFxuICAgICAgICAgIGNvbmZpZzoge30gYXMgYW55XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vY2tIdHRwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBtb2NrSHR0cCh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSk7XG4gICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgIGRhdGE6IHIuZGF0YSxcbiAgICAgICAgICBzdGF0dXM6IHIuY29kZSxcbiAgICAgICAgICBoZWFkZXJzOiByLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHIuZXJyb3IsXG4gICAgICAgICAgY29uZmlnOiB7fSBhcyBhbnlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuXG4gICAgY29uc3QgaGVhZGVyc0pzb24gPSBoZWFkZXJzLnRvSlNPTigpO1xuICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGhlYWRlcnNKc29uLnJlc3BvbnNldHlwZWF4aW9zID8gaGVhZGVyc0pzb24ucmVzcG9uc2V0eXBlYXhpb3MgOiAndGV4dCc7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFyZXNwb25zZSkge1xuXG5cblxuXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgZGF0YTogYm9keSxcbiAgICAgICAgICByZXNwb25zZVR5cGUsXG4gICAgICAgICAgaGVhZGVyczogaGVhZGVyc0pzb24sXG4gICAgICAgICAgY2FuY2VsVG9rZW46IHNvdXJjZS50b2tlbixcblxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG5cblxuICAgICAgaWYgKHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1baXNDYW5jZWxlZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZXJSZXN1bHQoe1xuICAgICAgICByZXM6IHtcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5zdGF0dXMgYXMgYW55LFxuICAgICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMgYXMgYW55KVxuICAgICAgICB9LFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGpvYmlkLFxuICAgICAgICBpc0FycmF5XG4gICAgICB9LCB7XG4gICAgICAgIHVybCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBpc0FycmF5LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F0Y2hlZEVycm9yKSB7XG4gICAgICBpZiAodGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cblxuICAgICAgaWYgKHR5cGVvZiBjYXRjaGVkRXJyb3IgPT09ICdvYmplY3QnICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBjb25zdCBlcnIgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YTtcbiAgICAgICAgY29uc3QgbXNnOiBzdHJpbmcgPSBjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlIHx8ICcnO1xuXG5cblxuICAgICAgICBsZXQgc3RhY2s6IHN0cmluZ1tdID0gKGVyci5zdGFjayB8fCAnJykuc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgIGNvbnN0IGVyck9icyA9IChSZXNvdXJjZVsnX2xpc3RlbkVycm9ycyddIGFzIFN1YmplY3Q8TW9kZWxzLkJhY2tlbmRFcnJvcj4pO1xuICAgICAgICBlcnJPYnMubmV4dCh7XG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGRhdGE6IGNhdGNoZWRFcnJvci5yZXNwb25zZS5kYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBgWyR7Y2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1c1RleHR9XTogYCA6ICcnO1xuICAgICAgdGhpcy5oYW5kbGVyUmVzdWx0KHtcbiAgICAgICAgcmVzOiB7XG4gICAgICAgICAgY29kZTogKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UpID8gY2F0Y2hlZEVycm9yLnJlc3BvbnNlLnN0YXR1cyBhcyBhbnkgOiB2b2lkIDAsXG4gICAgICAgICAgZXJyb3I6IGAke2Vycm9yfSR7Y2F0Y2hlZEVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICBkYXRhOiAoY2F0Y2hlZEVycm9yICYmIGNhdGNoZWRFcnJvci5yZXNwb25zZSkgPyBKU09OLnN0cmluZ2lmeShjYXRjaGVkRXJyb3IucmVzcG9uc2UuZGF0YSkgOiB2b2lkIDAsXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBqb2JpZCxcbiAgICAgICAgICBoZWFkZXJzOiBSZXN0SGVhZGVycy5mcm9tKGNhdGNoZWRFcnJvciAmJiBjYXRjaGVkRXJyb3IucmVzcG9uc2UgJiYgY2F0Y2hlZEVycm9yLnJlc3BvbnNlLmhlYWRlcnMpXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgam9iaWQsXG4gICAgICAgIGlzQXJyYXlcbiAgICAgIH0sIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBib2R5LFxuICAgICAgICBpc0FycmF5LFxuICAgICAgICBtZXRob2RcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwbGF5KG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCwgb25seUdldExhc3RSZXBsYXlGb3JNZXRob2Q6IGJvb2xlYW4pOiBNb2RlbHMuUmVwbGF5RGF0YSB7XG4gICAgbGV0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGE7XG5cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF0pKSB7XG5cbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF0gPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdKSkge1xuXG4gICAgICB0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF0gPSB7fTtcbiAgICB9XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF0pKSB7XG5cbiAgICAgIHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdID0ge307XG4gICAgfVxuXG5cbiAgICBjb25zdCBvYmplY3RJRFRvQ3JlYXRlT3JMYXN0ID0gKE9iamVjdC5rZXlzKHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdIGFzIE9iamVjdCkubGVuZ3RoKSArXG4gICAgICAob25seUdldExhc3RSZXBsYXlGb3JNZXRob2QgPyAwIDogMSk7XG4gICAgaWYgKG9ubHlHZXRMYXN0UmVwbGF5Rm9yTWV0aG9kICYmIChvYmplY3RJRFRvQ3JlYXRlT3JMYXN0ID09PSAwKSkge1xuICAgICAgcmV0dXJuIHJlcGxheTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLnJlcGxheVN1YmplY3RzW21ldGEuZW5kcG9pbnRdW21ldGEucGF0aF1bbWV0aG9kXVtvYmplY3RJRFRvQ3JlYXRlT3JMYXN0XSkpIHtcblxuICAgICAgdGhpcy5yZXBsYXlTdWJqZWN0c1ttZXRhLmVuZHBvaW50XVttZXRhLnBhdGhdW21ldGhvZF1bb2JqZWN0SURUb0NyZWF0ZU9yTGFzdF0gPSA8TW9kZWxzLlJlcGxheURhdGE+e1xuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpLFxuICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJlcGxheSA9IHRoaXMucmVwbGF5U3ViamVjdHNbbWV0YS5lbmRwb2ludF1bbWV0YS5wYXRoXVttZXRob2RdW29iamVjdElEVG9DcmVhdGVPckxhc3RdO1xuXG4gICAgaWYgKCFfLmlzTnVtYmVyKHJlcGxheS5pZCkpIHtcbiAgICAgIGlmIChSZXN0UmVxdWVzdC5qb2JJZCA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgUmVzdFJlcXVlc3Quam9iSWQgPSAwO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBqb2JpZDogbnVtYmVyID0gUmVzdFJlcXVlc3Quam9iSWQrKztcbiAgICAgIHJlcGxheS5pZCA9IGpvYmlkO1xuICAgICAgY29uc3Qgc3ViamVjdDogU3ViamVjdDxhbnk+ID0gcmVwbGF5LnN1YmplY3Q7XG4gICAgICBzdWJqZWN0W2pvYklEa2V5XSA9IGpvYmlkOyAvLyBtb2RpZnkgaW50ZXJuYWwgcnhqcyBzdWJqZWN0IG9ialxuXG4gICAgICB0aGlzLm1ldGFbam9iaWRdID0gbWV0YTtcbiAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF0gPSBzdWJqZWN0O1xuXG4gICAgICB0aGlzLnN1YmplY3RJbnVVc2Vbam9iaWRdW2N1c3RvbU9ic10gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcblxuXG5cbiAgICAgICAgb2JzZXJ2ZXIuYWRkKCgpID0+IHtcblxuICAgICAgICAgIGlmICghdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSkge1xuICAgICAgICAgICAgdGhpcy5zdWJqZWN0SW51VXNlW2pvYmlkXVtpc0NhbmNlbGVkXSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3ViamVjdEludVVzZVtqb2JpZF1bY2FuY2VsRm5dKCdbbmcyLXJlc3RdIG9uIHB1cnBvc2UgY2FuY2VsZWQgaHR0cCByZXF1ZXN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc3ViID0gc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGEgPT4gb2JzZXJ2ZXIubmV4dChhKSxcbiAgICAgICAgICBlcnJvcjogYSA9PiBvYnNlcnZlci5lcnJvcihhKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgIH1cblxuICAgIHJldHVybiByZXBsYXk7XG4gIH1cblxuXG5cblxuICBwcml2YXRlIGdlbmVyYWxSZXEoXG4gICAgbWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cCk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcblxuICAgIGNvbnN0IHJlcGxheTogTW9kZWxzLlJlcGxheURhdGEgPSB0aGlzLmdldFJlcGxheShtZXRob2QsIG1ldGEsIGZhbHNlKTtcbiAgICByZXBsYXkuZGF0YSA9IHsgdXJsLCBib2R5LCBoZWFkZXJzLCBpc0FycmF5IH07XG5cbiAgICAoKHB0aGlzLCBwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkgPT4ge1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHB0aGlzLnJlcShwdXJsLCBwbWV0aG9kLCBwaGVhZGVycywgcGJvZHksIHBpZCwgcGlzQXJyYXksIHBtb2NrSHR0cCkpO1xuICAgIH0pKHRoaXMsIHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXBsYXkuaWQsIGlzQXJyYXksIG1vY2tIdHRwKVxuXG4gICAgY29uc3QgcmVzcDogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4gPSBmaXJzdFZhbHVlRnJvbShyZXBsYXkuc3ViamVjdFtjdXN0b21PYnNdKSBhcyBhbnk7XG4gICAgcmVzcC5vYnNlcnZhYmxlID0gcmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXTtcbiAgICByZXNwLmNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeSh7XG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybFxuICAgIH0pO1xuICAgIHJldHVybiByZXNwO1xuICB9XG5cbiAgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbiwgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgnZ2V0JywgdXJsLCBib2R5LCBoZWFkZXJzLCBtZXRhLCBpc0FycmF5LCBtb2NrSHR0cCk7XG4gIH1cblxuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbiwgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgnaGVhZCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYWxSZXEoJ2RlbGV0ZScsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnMsXG4gICAgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0LFxuICAgIGlzQXJyYXk6IGJvb2xlYW4sXG4gICAgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cFxuICApOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbFJlcSgncG9zdCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdwdXQnLCB1cmwsIGJvZHksIGhlYWRlcnMsIG1ldGEsIGlzQXJyYXksIG1vY2tIdHRwKTtcbiAgfVxuXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZXN0SGVhZGVycyxcbiAgICBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgaXNBcnJheTogYm9vbGVhbixcbiAgICBtb2NrSHR0cDogTW9kZWxzLk1vY2tIdHRwXG4gICk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsUmVxKCdwYXRjaCcsIHVybCwgYm9keSwgaGVhZGVycywgbWV0YSwgaXNBcnJheSwgbW9ja0h0dHApO1xuICB9XG5cbiAganNvbnAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGhlYWRlcnM6IFJlc3RIZWFkZXJzLFxuICAgIG1ldGE6IE1vZGVscy5NZXRhUmVxdWVzdCxcbiAgICBpc0FycmF5OiBib29sZWFuLFxuICAgIG1vY2tIdHRwOiBNb2RlbHMuTW9ja0h0dHBcbiAgKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PGFueT4ge1xuXG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KCdqc29ucCcsIG1ldGEsIGZhbHNlKTtcbiAgICBjb25zdCBqb2JpZCA9IHJlcGxheS5pZDtcbiAgICBjb25zdCBtZXRob2QgPSAnanNvbnAnXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zbGljZSgwLCB1cmwubGVuZ3RoIC0gMSlcbiAgICAgIGxldCBudW0gPSBNYXRoLnJvdW5kKDEwMDAwICogTWF0aC5yYW5kb20oKSk7XG4gICAgICBsZXQgY2FsbGJhY2tNZXRob2ROYW1lID0gXCJjYl9cIiArIG51bTtcbiAgICAgIHdpbmRvd1tjYWxsYmFja01ldGhvZE5hbWVdID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tDYWNoZSh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBtZXRob2RcbiAgICAgICAgfSwgam9iaWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlclJlc3VsdCh7XG4gICAgICAgICAgcmVzOiB7XG4gICAgICAgICAgICBkYXRhLCBpc0FycmF5XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgam9iaWQsXG4gICAgICAgICAgaXNBcnJheVxuICAgICAgICB9LCB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgaXNBcnJheSxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBsZXQgc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjLnNyYyA9IGAke3VybH0/Y2FsbGJhY2s9JHtjYWxsYmFja01ldGhvZE5hbWV9YDtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2MpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzYyk7XG4gICAgfSlcblxuICAgIGNvbnN0IHJlc3A6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxhbnk+ID0gZmlyc3RWYWx1ZUZyb20ocmVwbGF5LnN1YmplY3RbY3VzdG9tT2JzXSkgYXMgYW55O1xuICAgIHJlc3Aub2JzZXJ2YWJsZSA9IHJlcGxheS5zdWJqZWN0W2N1c3RvbU9ic107XG4gICAgY29uc29sZS5sb2coJ2Fzc2lnaW5nIGN1c3RvbSBvYnNlcnZhYmxlJylcbiAgICByZXNwLmNhY2hlID0gUmVxdWVzdENhY2hlLmZpbmRCeSh7XG4gICAgICBib2R5LFxuICAgICAgaXNBcnJheSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybFxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cblxuICBwcml2YXRlIHJlcGxheVN1YmplY3RzID0ge307XG4gIHB1YmxpYyByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCwgbWV0YTogTW9kZWxzLk1ldGFSZXF1ZXN0KSB7XG4gICAgY29uc3QgcmVwbGF5OiBNb2RlbHMuUmVwbGF5RGF0YSA9IHRoaXMuZ2V0UmVwbGF5KG1ldGhvZCwgbWV0YSwgdHJ1ZSk7XG4gICAgaWYgKCFyZXBsYXkgfHwgIXJlcGxheS5kYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vIHJlcGxheSBmaXJzdCAke21ldGhvZH0gcmVxdWVzdCBmcm9tICR7bWV0YS5lbmRwb2ludH0vJHttZXRhLnBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfTtcbiAgICBpZiAocmVwbGF5ICYmIHJlcGxheS5zdWJqZWN0ICYmIEFycmF5LmlzQXJyYXkocmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzKSAmJlxuICAgICAgcmVwbGF5LnN1YmplY3Qub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKGBObyBvYnNlcnZhdG9ycyBmb3IgJHttZXRob2R9IHJlcXVlc3QgZnJvbSAke21ldGEuZW5kcG9pbnR9LyR7bWV0YS5wYXRofWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSByZXBsYXkuZGF0YS51cmw7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcGxheS5kYXRhLmhlYWRlcnM7XG4gICAgY29uc3QgYm9keSA9IHJlcGxheS5kYXRhLmJvZHk7XG4gICAgY29uc3QgaXNBcnJheSA9IHJlcGxheS5kYXRhLmlzQXJyYXk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlcSh1cmwsIG1ldGhvZCwgaGVhZGVycywgYm9keSwgcmVwbGF5LmlkLCBpc0FycmF5KSlcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdCBsaWIvcmVzdC1yZXF1ZXN0LnRzIl19
@@ -117,4 +117,4 @@ export class Rest {
117
117
  }
118
118
  ;
119
119
  ({}); // @--end-of-file-for-module=ng2-rest lib/rest.class.ts
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHeEQsTUFBTSxPQUFPLElBQUk7SUFHZixJQUFJLENBQUMsSUFBcUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDdEI7YUFBTTtZQUNMLE1BQU07Ozs7T0FJTCxDQUFBO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFPRCxJQUFZLFFBQVE7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUM7ZUFDL0QsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4RyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFXLGVBQWUsQ0FBQyxRQUFRO1FBQ2pDLElBQUksQ0FB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TyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBR0Y7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5cblxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0UmVzdFBhcmFtcywgZ2V0UGFyYW1zVXJsIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbmltcG9ydCB7IENMQVNTIH0gZnJvbSAndHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3dlYnNxbCc7XG5cblxuZXhwb3J0IGNsYXNzIFJlc3Q8VCwgVEEgPSBUW10+IGltcGxlbWVudHMgTW9kZWxzLkZuTWV0aG9kc0h0dHBXaXRoTW9jazxULCBUQT4ge1xuXG4gIHByaXZhdGUgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cDtcbiAgbW9jayhtb2NrOiBNb2RlbHMuTW9ja0h0dHApOiBNb2RlbHMuRm5NZXRob2RzSHR0cDxULCBUQT4ge1xuICAgIGlmICgodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpIHx8ICh0eXBlb2YgbW9jayA9PT0gJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLm1vY2tIdHRwID0gbW9jaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgYFtuZzItcmVzdF1cbiAgICAgIC5tb2RlbCguLi4pXG4gICAgICAubW9jayggPCBCQUQgTU9DSyBEQVRBID4gKVxuICAgICAgLi4uXG4gICAgICBgXG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cblxuXG5cbiAgcHJpdmF0ZSBfX21ldGFfZW5kcG9pbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfZW5kcG9pbnRSZXN0OiBzdHJpbmc7XG4gIHByaXZhdGUgZ2V0IGVuZHBvaW50KCkge1xuICAgIGxldCBlID0gdGhpcy5fX21ldGFfZW5kcG9pbnQ7XG4gICAgaWYgKHRoaXMucmVzdFF1ZXJ5UGFyYW1zICE9PSB2b2lkIDAgJiYgdGhpcy5fZW5kcG9pbnRSZXN0ICE9PSB2b2lkIDBcbiAgICAgICYmIHR5cGVvZiB0aGlzLl9lbmRwb2ludFJlc3QgPT09ICdzdHJpbmcnICYmIHRoaXMuX2VuZHBvaW50UmVzdC50cmltKCkgIT09ICcnKSBlID0gdGhpcy5fZW5kcG9pbnRSZXN0O1xuICAgIHJldHVybiBlO1xuICB9XG4gIHByaXZhdGUgcmVzdFF1ZXJ5UGFyYW1zOiBPYmplY3Q7XG4gIHB1YmxpYyBzZXQgX19yZXN0X2VuZHBvaW50KGVuZHBvaW50KSB7XG4gICAgdGhpcy5fZW5kcG9pbnRSZXN0ID0gZW5kcG9pbnQ7XG4gICAgaWYgKGVuZHBvaW50ID09PSB2b2lkIDApIHtcbiAgICAgIHRoaXMucmVzdFF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3RRdWVyeVBhcmFtcyA9IGdldFJlc3RQYXJhbXMoZW5kcG9pbnQsIHRoaXMuX19tZXRhX2VuZHBvaW50KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRVcmwocGFyYW1zOiBhbnksIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbmRwb2ludH0ke2dldFBhcmFtc1VybChwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKX1gO1xuICB9XG5cblxuXG5cbiAgcHJpdmF0ZSBfaGVhZGVycyA9IFJlc3RIZWFkZXJzLmZyb20oQ09OVEVOVF9UWVBFLkFQUExJQ0FUSU9OX0pTT04pO1xuICBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5faGVhZGVycztcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBlbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVxdWVzdDogUmVzdFJlcXVlc3QsXG4gICAgcHJpdmF0ZSBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgcHJpdmF0ZSBjdXN0b21Db250ZW50VHlwZTogUmVzdEhlYWRlcnMsXG4gICkge1xuICAgIHRoaXMuX19tZXRhX2VuZHBvaW50ID0gZW5kcG9pbnQ7XG5cbiAgfVxuXG5cblxuXG4gIHByaXZhdGUgcmVxKG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsXG4gICAgcmVxdWVzdEJvZHk6IFQsXG4gICAgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLFxuICAgIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UsXG4gICAgaXNBcnJheTogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuXG4gICAgY29uc3QgbW9kZWxVcmwgPSB0aGlzLmNyZWF0VXJsKHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICAgIGNvbnN0IGJvZHkgPSAoQ0xBU1MuZ2V0TmFtZUZyb21PYmplY3QocmVxdWVzdEJvZHkpID09PSAnRm9ybURhdGEnKVxuICAgICAgPyByZXF1ZXN0Qm9keVxuICAgICAgOiAocmVxdWVzdEJvZHkgPyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkgOiB2b2lkIDApO1xuXG5cbiAgICBpZiAodGhpcy5jdXN0b21Db250ZW50VHlwZSkge1xuICAgICAgY29uc3QgY3VzdG9tSGVhZGVyS2V5cyA9IHRoaXMuY3VzdG9tQ29udGVudFR5cGUua2V5cygpO1xuICAgICAgY29uc3QgY3VycmVudEhlYWRlcktleXMgPSB0aGlzLl9oZWFkZXJzLmtleXMoKTtcbiAgICAgIGN1cnJlbnRIZWFkZXJLZXlzXG4gICAgICAgIC5maWx0ZXIoa2V5ID0+ICFjdXN0b21IZWFkZXJLZXlzLmluY2x1ZGVzKGtleSkpXG4gICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50VHlwZS5zZXQoa2V5LCB0aGlzLl9oZWFkZXJzLmdldChrZXkpKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLl9oZWFkZXJzID0gdGhpcy5jdXN0b21Db250ZW50VHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVycyA9IFJlc3RIZWFkZXJzLmZyb20oQ09OVEVOVF9UWVBFLkFQUExJQ0FUSU9OX0pTT04pO1xuICAgIH1cblxuXG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlcXVlc3RbbWV0aG9kLnRvTG93ZXJDYXNlKCldKFxuICAgICAgbW9kZWxVcmwsXG4gICAgICBib2R5LFxuICAgICAgdGhpcy5oZWFkZXJzLFxuICAgICAgdGhpcy5tZXRhLFxuICAgICAgaXNBcnJheSxcbiAgICAgIHRoaXMubW9ja0h0dHBcbiAgICApO1xuXG4gICAgdGhpcy5tb2NrSHR0cCA9IHZvaWQgMDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuXG5cblxuICByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkge1xuICAgIHRoaXMucmVxdWVzdC5yZXBsYXkobWV0aG9kLCB0aGlzLm1ldGEpO1xuICB9XG5cblxuICBhcnJheSA9IHtcbiAgICBnZXQ6IChwYXJhbXM6IE1vZGVscy5VcmxQYXJhbXNbXSA9IHZvaWQgMCwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2dldCcsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55XG4gICAgfSxcbiAgICBoZWFkOiAocGFyYW1zOiBNb2RlbHMuVXJsUGFyYW1zW10gPSB2b2lkIDAsIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdoZWFkJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnlcbiAgICB9LFxuICAgIHBvc3Q6IChpdGVtOiBUQSwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgncG9zdCcsIGl0ZW0gYXMgYW55LCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnk7XG4gICAgfSxcbiAgICBwdXQ6IChpdGVtOiBUQSwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgncHV0JywgaXRlbSBhcyBhbnksIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueTtcbiAgICB9LFxuICAgIHBhdGNoOiAoaXRlbTogVEEsIHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ3BhdGNoJywgaXRlbSBhcyBhbnksIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueTtcbiAgICB9LFxuICAgIGRlbGV0ZTogKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2RlbGV0ZScsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH0sXG4gICAganNvbnA6IChwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdqc29ucCcsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIGdldChwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgnZ2V0Jywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKSBhcyBhbnk7XG4gIH1cblxuICBoZWFkKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdoZWFkJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKSBhcyBhbnk7XG4gIH1cblxuICBwb3N0KGl0ZW06IFQsIHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdwb3N0JywgaXRlbSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBwdXQoaXRlbTogVCwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ3B1dCcsIGl0ZW0sIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICB9XG5cbiAgcGF0Y2goaXRlbTogVCwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ3BhdGNoJywgaXRlbSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBkZWxldGUocGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ2RlbGV0ZScsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBqc29ucChwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgnanNvbnAnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICB9XG5cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL3Jlc3QuY2xhc3MudHMiXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHeEQsTUFBTSxPQUFPLElBQUk7SUFHZixJQUFJLENBQUMsSUFBcUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU07Ozs7T0FJTCxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQU9ELElBQVksUUFBUTtRQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQztlQUMvRCxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hHLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELElBQVcsZUFBZSxDQUFD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QUUsTUFBMkIsRUFBRSx1QkFBZ0MsS0FBSztRQUMvRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQTJCLEVBQUUsdUJBQWdDLEtBQUs7UUFDdEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBR0Y7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5cblxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0UmVzdFBhcmFtcywgZ2V0UGFyYW1zVXJsIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgUmVzdFJlcXVlc3QgfSBmcm9tICcuL3Jlc3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBSZXN0SGVhZGVycyB9IGZyb20gJy4vcmVzdC1oZWFkZXJzJztcbmltcG9ydCB7IENPTlRFTlRfVFlQRSB9IGZyb20gJy4vY29udGVudC10eXBlJztcbmltcG9ydCB7IENMQVNTIH0gZnJvbSAndHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3dlYnNxbCc7XG5cblxuZXhwb3J0IGNsYXNzIFJlc3Q8VCwgVEEgPSBUW10+IGltcGxlbWVudHMgTW9kZWxzLkZuTWV0aG9kc0h0dHBXaXRoTW9jazxULCBUQT4ge1xuXG4gIHByaXZhdGUgbW9ja0h0dHA6IE1vZGVscy5Nb2NrSHR0cDtcbiAgbW9jayhtb2NrOiBNb2RlbHMuTW9ja0h0dHApOiBNb2RlbHMuRm5NZXRob2RzSHR0cDxULCBUQT4ge1xuICAgIGlmICgodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpIHx8ICh0eXBlb2YgbW9jayA9PT0gJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLm1vY2tIdHRwID0gbW9jaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgYFtuZzItcmVzdF1cbiAgICAgIC5tb2RlbCguLi4pXG4gICAgICAubW9jayggPCBCQUQgTU9DSyBEQVRBID4gKVxuICAgICAgLi4uXG4gICAgICBgXG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cblxuXG5cbiAgcHJpdmF0ZSBfX21ldGFfZW5kcG9pbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfZW5kcG9pbnRSZXN0OiBzdHJpbmc7XG4gIHByaXZhdGUgZ2V0IGVuZHBvaW50KCkge1xuICAgIGxldCBlID0gdGhpcy5fX21ldGFfZW5kcG9pbnQ7XG4gICAgaWYgKHRoaXMucmVzdFF1ZXJ5UGFyYW1zICE9PSB2b2lkIDAgJiYgdGhpcy5fZW5kcG9pbnRSZXN0ICE9PSB2b2lkIDBcbiAgICAgICYmIHR5cGVvZiB0aGlzLl9lbmRwb2ludFJlc3QgPT09ICdzdHJpbmcnICYmIHRoaXMuX2VuZHBvaW50UmVzdC50cmltKCkgIT09ICcnKSBlID0gdGhpcy5fZW5kcG9pbnRSZXN0O1xuICAgIHJldHVybiBlO1xuICB9XG4gIHByaXZhdGUgcmVzdFF1ZXJ5UGFyYW1zOiBPYmplY3Q7XG4gIHB1YmxpYyBzZXQgX19yZXN0X2VuZHBvaW50KGVuZHBvaW50KSB7XG4gICAgdGhpcy5fZW5kcG9pbnRSZXN0ID0gZW5kcG9pbnQ7XG4gICAgaWYgKGVuZHBvaW50ID09PSB2b2lkIDApIHtcbiAgICAgIHRoaXMucmVzdFF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3RRdWVyeVBhcmFtcyA9IGdldFJlc3RQYXJhbXMoZW5kcG9pbnQsIHRoaXMuX19tZXRhX2VuZHBvaW50KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRVcmwocGFyYW1zOiBhbnksIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbmRwb2ludH0ke2dldFBhcmFtc1VybChwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKX1gO1xuICB9XG5cblxuXG5cbiAgcHJpdmF0ZSBfaGVhZGVycyA9IFJlc3RIZWFkZXJzLmZyb20oQ09OVEVOVF9UWVBFLkFQUExJQ0FUSU9OX0pTT04pO1xuICBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5faGVhZGVycztcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBlbmRwb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVxdWVzdDogUmVzdFJlcXVlc3QsXG4gICAgcHJpdmF0ZSBtZXRhOiBNb2RlbHMuTWV0YVJlcXVlc3QsXG4gICAgcHJpdmF0ZSBjdXN0b21Db250ZW50VHlwZTogUmVzdEhlYWRlcnMsXG4gICkge1xuICAgIHRoaXMuX19tZXRhX2VuZHBvaW50ID0gZW5kcG9pbnQ7XG5cbiAgfVxuXG5cblxuXG4gIHByaXZhdGUgcmVxKG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2QsXG4gICAgcmVxdWVzdEJvZHk6IFQsXG4gICAgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLFxuICAgIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UsXG4gICAgaXNBcnJheTogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuXG4gICAgY29uc3QgbW9kZWxVcmwgPSB0aGlzLmNyZWF0VXJsKHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICAgIGNvbnN0IGJvZHkgPSAoQ0xBU1MuZ2V0TmFtZUZyb21PYmplY3QocmVxdWVzdEJvZHkpID09PSAnRm9ybURhdGEnKVxuICAgICAgPyByZXF1ZXN0Qm9keVxuICAgICAgOiAocmVxdWVzdEJvZHkgPyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkgOiB2b2lkIDApO1xuXG5cbiAgICBpZiAodGhpcy5jdXN0b21Db250ZW50VHlwZSkge1xuICAgICAgY29uc3QgY3VzdG9tSGVhZGVyS2V5cyA9IHRoaXMuY3VzdG9tQ29udGVudFR5cGUua2V5cygpO1xuICAgICAgY29uc3QgY3VycmVudEhlYWRlcktleXMgPSB0aGlzLl9oZWFkZXJzLmtleXMoKTtcbiAgICAgIGN1cnJlbnRIZWFkZXJLZXlzXG4gICAgICAgIC5maWx0ZXIoa2V5ID0+ICFjdXN0b21IZWFkZXJLZXlzLmluY2x1ZGVzKGtleSkpXG4gICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50VHlwZS5zZXQoa2V5LCB0aGlzLl9oZWFkZXJzLmdldChrZXkpKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLl9oZWFkZXJzID0gdGhpcy5jdXN0b21Db250ZW50VHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGVhZGVycyA9IFJlc3RIZWFkZXJzLmZyb20oQ09OVEVOVF9UWVBFLkFQUExJQ0FUSU9OX0pTT04pO1xuICAgIH1cblxuXG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlcXVlc3RbbWV0aG9kLnRvTG93ZXJDYXNlKCldKFxuICAgICAgbW9kZWxVcmwsXG4gICAgICBib2R5LFxuICAgICAgdGhpcy5oZWFkZXJzLFxuICAgICAgdGhpcy5tZXRhLFxuICAgICAgaXNBcnJheSxcbiAgICAgIHRoaXMubW9ja0h0dHBcbiAgICApO1xuXG4gICAgdGhpcy5tb2NrSHR0cCA9IHZvaWQgMDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuXG5cblxuICByZXBsYXkobWV0aG9kOiBNb2RlbHMuSHR0cE1ldGhvZCkge1xuICAgIHRoaXMucmVxdWVzdC5yZXBsYXkobWV0aG9kLCB0aGlzLm1ldGEpO1xuICB9XG5cblxuICBhcnJheSA9IHtcbiAgICBnZXQ6IChwYXJhbXM6IE1vZGVscy5VcmxQYXJhbXNbXSA9IHZvaWQgMCwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2dldCcsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55XG4gICAgfSxcbiAgICBoZWFkOiAocGFyYW1zOiBNb2RlbHMuVXJsUGFyYW1zW10gPSB2b2lkIDAsIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdoZWFkJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnlcbiAgICB9LFxuICAgIHBvc3Q6IChpdGVtOiBUQSwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgncG9zdCcsIGl0ZW0gYXMgYW55LCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zLCB0cnVlKSBhcyBhbnk7XG4gICAgfSxcbiAgICBwdXQ6IChpdGVtOiBUQSwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtcz86IGJvb2xlYW4pOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUQT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJlcSgncHV0JywgaXRlbSBhcyBhbnksIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueTtcbiAgICB9LFxuICAgIHBhdGNoOiAoaXRlbTogVEEsIHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ3BhdGNoJywgaXRlbSBhcyBhbnksIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMsIHRydWUpIGFzIGFueTtcbiAgICB9LFxuICAgIGRlbGV0ZTogKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VEE+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXEoJ2RlbGV0ZScsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH0sXG4gICAganNvbnA6IChwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbik6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVxKCdqc29ucCcsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcywgdHJ1ZSkgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIGdldChwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgnZ2V0Jywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKSBhcyBhbnk7XG4gIH1cblxuICBoZWFkKHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdoZWFkJywgdm9pZCAwLCBwYXJhbXMsIGRvTm90U2VyaWFsaXplUGFyYW1zKSBhcyBhbnk7XG4gIH1cblxuICBwb3N0KGl0ZW06IFQsIHBhcmFtcz86IE1vZGVscy5VcmxQYXJhbXNbXSwgZG9Ob3RTZXJpYWxpemVQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZSk6IE1vZGVscy5Qcm9taXNlT2JzZXJ2YWJsZU1peDxNb2RlbHMuSHR0cFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxKCdwb3N0JywgaXRlbSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBwdXQoaXRlbTogVCwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ3B1dCcsIGl0ZW0sIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICB9XG5cbiAgcGF0Y2goaXRlbTogVCwgcGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ3BhdGNoJywgaXRlbSwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBkZWxldGUocGFyYW1zPzogTW9kZWxzLlVybFBhcmFtc1tdLCBkb05vdFNlcmlhbGl6ZVBhcmFtczogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxzLlByb21pc2VPYnNlcnZhYmxlTWl4PE1vZGVscy5IdHRwUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXEoJ2RlbGV0ZScsIHZvaWQgMCwgcGFyYW1zLCBkb05vdFNlcmlhbGl6ZVBhcmFtcyk7XG4gIH1cblxuICBqc29ucChwYXJhbXM/OiBNb2RlbHMuVXJsUGFyYW1zW10sIGRvTm90U2VyaWFsaXplUGFyYW1zOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbHMuUHJvbWlzZU9ic2VydmFibGVNaXg8TW9kZWxzLkh0dHBSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcSgnanNvbnAnLCB2b2lkIDAsIHBhcmFtcywgZG9Ob3RTZXJpYWxpemVQYXJhbXMpO1xuICB9XG5cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLXJlc3QgbGliL3Jlc3QuY2xhc3MudHMiXX0=