ng2-rest-swagger-generator 16.0.1 → 16.0.3

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.
@@ -1,6 +1,6 @@
1
1
  THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
2
 
3
- Assets from this folder are being shipped with this npm package (ng2-rest-swagger-generator@16.0.1)
3
+ Assets from this folder are being shipped with this npm package (ng2-rest-swagger-generator@16.0.3)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
@@ -1,6 +1,6 @@
1
1
  import { /* */ /* */ _ } from 'tnp-core/browser'; /* */
2
2
  import { CoreHelpers as TnpHelpers } from 'tnp-core/browser';
3
- class Helpers extends TnpHelpers {
3
+ class HelpersSwagger extends TnpHelpers {
4
4
  static { this.SYMBOL = {
5
5
  INDEX_SWG: Symbol(),
6
6
  OUTPUT_FOLDER: Symbol()
@@ -38,7 +38,6 @@ class Helpers extends TnpHelpers {
38
38
  /* */
39
39
  /* */
40
40
  /* */
41
- /* */
42
41
  static get serviceFromTag() {
43
42
  const self = this;
44
43
  return {
@@ -195,7 +194,7 @@ class Helpers extends TnpHelpers {
195
194
  _.forOwn(v, (v2, k2) => {
196
195
  if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {
197
196
  let resp = v2.responses['200'] && v2.responses['200'].schema;
198
- if (pathes[k] === undefined)
197
+ if (pathes[k] === void 0)
199
198
  pathes[k] = {}; // @ts-ignore
200
199
  let type = this.getResponseType(resp, swg);
201
200
  if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['
@@ -383,7 +382,7 @@ class Helpers extends TnpHelpers {
383
382
  return summary;
384
383
  }
385
384
  }
386
- export { Helpers };
385
+ export { HelpersSwagger };
387
386
  ;
388
387
  ({}); // @--end-of-file-for-module=ng2-rest-swagger-generator lib/helpers.ts
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3IvcHJvamVjdHMvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3Ivc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVSxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDLENBQUEsS0FBSztBQVFuRSxPQUFPLEVBQUUsV0FBVyxJQUFJLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzdELE1BQWEsT0FBUSxTQUFRLFVBQVU7YUFFOUIsV0FBTSxHQUFHO1FBQ2QsU0FBUyxFQUFFLE1BQU0sRUFBRTtRQUNuQixhQUFhLEVBQUUsTUFBTSxFQUFFO0tBQ3hCLENBQUE7SUFJRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW1DLEVBQUUsVUFBa0I7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFnQyxFQUFFLFFBQWdCLEVBQUUsYUFBc0I7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRXRDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMs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SSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBRWpFO1FBSUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUgsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUdMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSzthQUVZLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFFMUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFlO1FBSXBDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O1NBcGRVLE9BQU87QUFvZ0JuQixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHNFQUFzRSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgICBwYXRoLCAvKiAqLyAvKiAqLyAgICAgIF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IENvcmVIZWxwZXJzIGFzIFRucEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuXG5cblxuZXhwb3J0IGNsYXNzIEhlbHBlcnMgZXh0ZW5kcyBUbnBIZWxwZXJzIHtcblxuICBzdGF0aWMgU1lNQk9MID0ge1xuICAgIElOREVYX1NXRzogU3ltYm9sKCksXG4gICAgT1VUUFVUX0ZPTERFUjogU3ltYm9sKClcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG91dHB1dDogc3RyaW5nO1xuICBwcml2YXRlIHN0YXRpYyBhcGlzOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWxbXTtcbiAgc3RhdGljIHByZXBhcmVQYXRocyhhcGlzOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWxbXSwgb3V0cHV0QmFzZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vdXRwdXQgPSBgJHtwcm9jZXNzLmN3ZCgpfS8ke291dHB1dEJhc2V9YFxuICAgIHRoaXMuYXBpcyA9IGFwaXM7XG4gIH1cblxuICBzdGF0aWMgcHJlcGFyZU1vZGVsKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCBpbmRleFN3ZzogbnVtYmVyLCBpc0h0dHBzRW5hYmxlOiBib29sZWFuKSB7XG4gICAgc3dnW3RoaXMuU1lNQk9MLklOREVYX1NXR10gPSBpbmRleFN3ZztcblxuICAgIHN3Zy5ob3N0ID0gc3dnLmhvc3QgJiYgKGlzSHR0cHNFbmFibGUgPyAnaHR0cHMnIDogJ2h0dHAnKSArIGA6Ly8ke3N3Zy5ob3N0LnJlcGxhY2UoLzpbMC05XSovZywgJycpfWBcbiAgICBpZiAoIXN3Zy5iYXNlUGF0aCkge1xuICAgICAgc3dnLmJhc2VQYXRoID0gJydcbiAgICB9XG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbiAgc3RhdGljIGdldCBzZXJ2aWNlRnJvbVRhZygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbENsYXNzTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4ge1xuICAgICAgICAgIHN3Zy50YWdzLmZvckVhY2godGFnID0+IHsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmFtZXMucHVzaChzZWxmLnNlcnZpY2VGcm9tVGFnLmNsYXNzTmFtZShzd2csIHRhZykpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZShzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBfLnVwcGVyRmlyc3QoXy5jYW1lbENhc2UodGFnLm5hbWUpKSArICdTZXJ2aWNlJztcbiAgICAgICAgcmV0dXJuIGAke2dyb3VwRm9sZGVyTmFtZX0ke2NsYXNzTmFtZS5yZXBsYWNlKC9cXC8vZywgJycpfWA7XG4gICAgICB9LFxuICAgICAgYWJzb2x1dGVGaWxlUGF0aChzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG5cbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3Zyl9LyR7c2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpfS50c2A7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBlbmRwb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5tYXAoc3dnID0+IHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfTonJHtzd2cuaG9zdH0nYFxuICAgIH0pXG4gIH1cblxuXG5cbiAgc3RhdGljIGdldCBhYnNvbHV0ZVBhdGgoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cblxuICAgIHJldHVybiB7XG4gICAgICBnZXQgb3V0cHV0KCkge1xuICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgUGF0aEZpbGVfaW5kZXhfdHMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L2luZGV4LnRzYDtcbiAgICAgIH0sXG4gICAgICBnZXQgUGF0aEZpbGVfbW9kdWxlX3RzKCkge1xuICAgICAgICBjb25zdCBBUElwYXRoID0gc2VsZi5vdXRwdXQ7XG4gICAgICAgIHJldHVybiBgJHtBUElwYXRofS9tb2R1bGUudHNgO1xuICAgICAgfSxcblxuICAgICAgZ2V0IFBhdGhGb2xkZXJfc2VydmljZXMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L3NlcnZpY2VzYDtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBQYXRoRmlsZV9zZXJ2aWNlc19pbmRleF90cygpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXN9L2luZGV4LnRzYDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc30vJHtncm91cEZvbGRlck5hbWV9YDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGaWxlX3NlcnZpY2VzX2dyb3VwTmFtZV9pbmRleF90cyhzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vaW5kZXgudHNgO1xuICAgICAgfSxcblxuICAgICAgUGF0aEZpbGVfc2VydmljZXNfZ3JvdXBOQW1lX3NlcnZpY2VOYW1lX3RzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUZpbGVOYW1lID0gc2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpO1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vJHtzZXJ2aWNlRmlsZU5hbWV9LnRzYDtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ3JvdXBGcm9tSlNPTigpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGFsbEdyb3VwTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4geyAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5hbWVzLnB1c2goc2VsZi5ncm91cEZyb21KU09OLmZvbGRlck5hbWUoc3dnKSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGZvbGRlck5hbWUoc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGg6IHN0cmluZyA9IHN3Zy5iYXNlUGF0aDtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHN3Z1tzZWxmLlNZTUJPTC5JTkRFWF9TV0ddO1xuICAgICAgICByZXR1cm4gXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKGJhc2VQYXRoLnRyaW0oKSA9PT0gJycgPyBganNvbiR7aW5kZXh9YCA6IGJhc2VQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZpbmRUYWdzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgY29uc3QgdGFncyA9IFtdXG4gICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzW3BdKS5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBjb25zdCBhID0gc3dnLnBhdGhzW3BdW21dO1xuICAgICAgICBpZiAoXy5pc0FycmF5KGEudGFncykpIHtcbiAgICAgICAgICBhLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICAgICAgICAgICAgaWYgKHRhZ3MuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdGFnKS5sZW5ndGggPT09IDApIHsgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGFncy5wdXNoKHsgbmFtZTogdGFnIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgICByZXR1cm4gdGFncztcbiAgfVxuXG5cblxuXG5cblxuICAvKipcbiAgICogVG8gZ2VuZXJhdGUgZ2V0L2Jvb2tzL3tpZH0gPT4gZ2V0X2Jvb2tzX19pZF9cbiAgICovXG4gIHN0YXRpYyBjbGVhblBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvey9nLCBcIl9cIikucmVwbGFjZSgvfS9nLCBcIl9cIikucmVwbGFjZSgvXFwvL2csIFwiX1wiKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbiAgfVxuXG5cbiAgc3RhdGljIGNsZWFuUGF0aE1vZGVsKHBhdGhNb2RlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGhNb2RlbC5yZXBsYWNlKC9cXC97L2csICcvOicpLnJlcGxhY2UoL30vZywgJycpO1xuICB9XG5cblxuICBzdGF0aWMgc3dhZ2dlclR5cGVUb0pTKHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJpbnRlZ2VyXCIgfCBcImJvb2xlYW5cIiB8IFwiYXJyYXlcIiB8IFwiZmlsZVwiLCBpdGVtc1R5cGU6IGFueSA9ICdhbnknKSB7XG4gICAgcmV0dXJuICh0eXBlID09PSAnaW50ZWdlcicpID8gJ251bWJlcidcbiAgICAgIDogKHR5cGUgPT09ICdhcnJheScpID8gIWl0ZW1zVHlwZSA/ICdhbnknIDogYCR7dGhpcy5zd2FnZ2VyVHlwZVRvSlMoaXRlbXNUeXBlKX1bXWBcbiAgICAgICAgOiAodHlwZSA9PT0gJ2ZpbGUnKSA/ICdhbnknIDogdHlwZTtcbiAgfVxuXG5cblxuICBzdGF0aWMgZ2V0T2JqZWN0RGVmaW5pdGlvbihyZWY6IHN0cmluZywgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwsIGRlZXAgPSAwKTogc3RyaW5nIHtcbiAgICBpZiAoZGVlcCA9PSAxKSByZXR1cm4gJyc7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdCYWQganNvbiAkcmVmIGluc2lkZSBzd2FnZ2VyJylcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IHJlcyA9ICcnO1xuICAgIHJlZiA9IHJlZi5yZXBsYWNlKCcjLycsICcnKS5yZXBsYWNlKC9cXC8vZywgJy4nKTtcblxuICAgIGxldCBvYmo6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJEZWYgPSA8TW9kZWxzLlN3YWdnZXIuU3dhZ2dlckRlZj5fLmdldChzd2csIHJlZik7XG5cblxuXG5cblxuXG5cblxuXG4gICAgXy5mb3JPd24ob2JqLnByb3BlcnRpZXMsICh2LCBrKSA9PiB7XG5cbiAgICAgIGlmICh2LiRyZWYgJiYgdHlwZW9mIHYuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LiRyZWYsIHN3ZywgZGVlcCsrKSArIFwifTtcXG5cIjtcbiAgICAgIH0gZWxzZSBpZiAodi5zY2hlbWEgJiYgdi5zY2hlbWEuJHJlZiAmJiB0eXBlb2Ygdi5zY2hlbWEuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LnNjaGVtYS4kcmVmLCBzd2csIGRlZXArKykgKyBcIn07XFxuXCI7XG5cbiAgICAgIH0gZWxzZSBpZiAodi5pdGVtcyAmJiB2Lml0ZW1zLiRyZWYgJiYgdHlwZW9mIHYuaXRlbXMuJHJlZiA9PT0gXCJzdHJpbmdcIiAmJiB2LnR5cGUgJiYgdi50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9W107XFxuXCI7XG5cblxuICAgICAgfSBlbHNlIGlmICh2Lml0ZW1zICYmIHYuaXRlbXMuJHJlZiAmJiB0eXBlb2Ygdi5pdGVtcy4kcmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9O1xcblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzUmVxdWlyZWQgPSAob2JqLnJlcXVpcmVkICYmIG9iai5yZXF1aXJlZCBpbnN0YW5jZW9mIEFycmF5ICYmIG9iai5yZXF1aXJlZC5maWx0ZXIobyA9PiBvID09PSBrKS5sZW5ndGggPiAwKVxuICAgICAgICBsZXQgdHlwZSA9ICh2LmVudW0gJiYgdi5lbnVtIGluc3RhbmNlb2YgQXJyYXkgJiYgdi5lbnVtLmxlbmd0aCA+IDApXG4gICAgICAgICAgPyB2LmVudW0ubWFwKGUgPT4gJ1wiJyArIGUgKyAnXCInKS5qb2luKCd8JykgOiB0aGlzLnN3YWdnZXJUeXBlVG9KUyh2LnR5cGUsIHYuaXRlbXMgPyB2Lml0ZW1zLnR5cGUgOiAnYW55Jyk7XG5cbiAgICAgICAgcmVzICs9IGsgKyAoIWlzUmVxdWlyZWQgPyAnPycgOiBcIlwiKSArIFwiOlwiICsgdHlwZSArIFwiO1xcblwiXG4gICAgICB9XG4gICAgfSk7XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHJpdmF0ZSBwYXRoZXMgPSB7XG4gICAqICAgICAgZ2V0X2FsbF9jb21wYW5pZXM6IG5ldyBTaW1wbGVSZXNvdXJjZTxcbiAgICogICAgICAgICAgc3RyaW5nLCBBLCBUQSwgUlAgZXh0ZW5kcyBPYmplY3QsIFFQIGV4dGVuZHMgUmVzdC5VcmxQYXJhbXM+KGVuZHBvaW50LCBtb2RlbCksXG4gICAqICAgICAgZ2V0X2J5aWRfY29tcGFuaWVzOiBuZXcgU2ltcGxlUmVzb3VyY2U8XG4gICAqICAgICAgICAgIHN0cmluZywgQSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIFJlc3QuVXJsUGFyYW1zPihlbmRwb2ludCwgbW9kZWwpXG4gICAqIH1cbiAgICovXG4gIHN0YXRpYyBnZXRBbmd1bGFyUHJpdmF0ZVBhdGhlc0J5VGFnKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpOiBzdHJpbmcge1xuICAgIGxldCByZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGJhc2UgPSBzd2cuYmFzZVBhdGgucmVwbGFjZSgnLycsICcnKTtcblxuICAgIGxldCBwYXRoZXM6IE9iamVjdCA9IHt9O1xuICAgIF8uZm9yT3duKHN3Zy5wYXRocywgKHYsIGspID0+IHtcbiAgICAgIF8uZm9yT3duKHYsICh2MiwgazIpID0+IHtcbiAgICAgICAgaWYgKF8uaXNBcnJheSh2Mi50YWdzKSAmJiB2Mi50YWdzLmZpbHRlcihmID0+IGYgPT09IHRhZy5uYW1lKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IHJlc3AgPSB2Mi5yZXNwb25zZXNbJzIwMCddICYmIHYyLnJlc3BvbnNlc1snMjAwJ10uc2NoZW1hO1xuXG5cblxuXG4gICAgICAgICAgaWYgKHBhdGhlc1trXSA9PT0gdW5kZWZpbmVkKSBwYXRoZXNba10gPSB7fTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRSZXNwb25zZVR5cGUocmVzcCwgc3dnKTtcblxuICAgICAgICAgIGlmICh0eXBlLmxlbmd0aCA+IDMgJiYgdHlwZS5jaGFyQXQodHlwZS5sZW5ndGggLSAxKSA9PT0gJ10nICYmIHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMikgPT09ICdbJ1xuICAgICAgICAgICAgJiYgIXBhdGhlc1trXVsnYXJyYXknXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydhcnJheSddID0gdHlwZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGsyICE9PSAnZGVsZXRlJyAmJiAhcGF0aGVzW2tdWydzaW5nbGUnXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydzaW5nbGUnXSA9IHR5cGU7XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBsZXQgcGF0aFJlc291cmNlczogTW9kZWxzLlBhdGhSZXNvdXJjZVtdID0gW107XG5cbiAgICBfLmZvck93bihwYXRoZXMsICh2LCBwKSA9PiB7XG5cbiAgICAgIHBhdGhSZXNvdXJjZXMucHVzaCh7XG4gICAgICAgIGNsZWFuX3BhdGg6IHRoaXMuY2xlYW5QYXRoKHApLFxuICAgICAgICBtb2RlbDogdGhpcy5jbGVhblBhdGhNb2RlbChwKSxcbiAgICAgICAgZW5kcG9pbnQ6IHN3Zy5iYXNlUGF0aCxcbiAgICAgICAgc2luZ2xlTW9kZWxUeXBlOiAhdlsnc2luZ2xlJ10gPyAnYW55JyA6IHZbJ3NpbmdsZSddLFxuICAgICAgICBtdWx0aXBsZU1vZGVsVHlwZTogIXZbJ2FycmF5J10gPyAnYW55JyA6IHZbJ2FycmF5J10sXG4gICAgICAgIHF1ZXJ5UGFyYW1zVHlwZTogJ2FueScsXG4gICAgICAgIHBhdGhQYXJhbXNUeXBlOiAnYW55J1xuICAgICAgfSlcbiAgICB9KVxuXG5cbiAgICBwYXRoUmVzb3VyY2VzLmZvckVhY2gocCA9PiB7XG4gICAgICByZXMucHVzaChgJHtwLmNsZWFuX3BhdGh9OiBuZXcgU2ltcGxlUmVzb3VyY2U8XFxuJHtwLnNpbmdsZU1vZGVsVHlwZX0sXFxuJHtwLm11bHRpcGxlTW9kZWxUeXBlfVxcbj4oIE5nMlJlc3RHZW5Nb2R1bGUuZW5wb2ludFVybHMuJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfSwgJyR7cC5tb2RlbH0nIClgKTtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGBwcml2YXRlIHBhdGhlcyA9IHsgXFxuJHtyZXMuam9pbignLFxcbicpfVxcbn07YFxuICB9XG5cblxuICAvKlxuICAgc2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL0NvbXBhbnlEVE9cIlxuICAgICAgfVxuICB9XG5cbiAgXCJzY2hlbWFcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9Db21wYW55RFRPXCJcbiAgfVxuICAgKi9cblxuICBzdGF0aWMgZ2V0UmVzcG9uc2VUeXBlKG86IE1vZGVscy5Td2FnZ2VyLk9ialNjaGVtYSwgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICBsZXQgcmVzID0gJ3t9IHwgYW55JztcbiAgICBpZiAobyAmJiBvLiRyZWYgJiYgdHlwZW9mIG8uJHJlZiA9PT0gJ3N0cmluZycgJiYgby4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uJHJlZiwgc3dnKSArIFwifVwiO1xuXG4gICAgfSBlbHNlIGlmIChvICYmIG8udHlwZSA9PT0gJ2FycmF5JyAmJiBvLml0ZW1zICYmIG8uaXRlbXMuJHJlZiAmJlxuICAgICAgdHlwZW9mIG8uaXRlbXMuJHJlZiA9PT0gJ3N0cmluZycgJiYgby5pdGVtcy4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uaXRlbXMuJHJlZiwgc3dnKSArIFwifVtdXCI7XG5cbiAgICB9XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgcHJpdmF0ZSBzdGF0aWMgY291bnQxID0gMDtcblxuICBzdGF0aWMgcmVjcmVhdGVTdW1tYXJ5KHN1bW1hcnk6IHN0cmluZykge1xuXG5cblxuICAgIHJldHVybiBzdW1tYXJ5O1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdC1zd2FnZ2VyLWdlbmVyYXRvciBsaWIvaGVscGVycy50cyJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3IvcHJvamVjdHMvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3Ivc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVSxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDLENBQUEsS0FBSztBQVFuRSxPQUFPLEVBQUUsV0FBVyxJQUFJLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTdELE1BQWEsY0FBZSxTQUFRLFVBQVU7YUFFckMsV0FBTSxHQUFHO1FBQ2QsU0FBUyxFQUFFLE1BQU0sRUFBRTtRQUNuQixhQUFhLEVBQUUsTUFBTSxFQUFFO0tBQ3hCLENBQUE7SUFJRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW1DLEVBQUUsVUFBa0I7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFnQyxFQUFFLFFBQWdCLEVBQUUsYUFBc0I7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRXRDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMs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QyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUVqRTtRQUlELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVILEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7YUFFWSxXQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBZTtRQUlwQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztTQW5kVSxjQUFjO0FBbWdCMUIsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzRUFBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7ICAgcGF0aCwgLyogKi8gLyogKi8gICAgICBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDb3JlSGVscGVycyBhcyBUbnBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWhlbHBlcnMvYnJvd3Nlcic7XG5cblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNTd2FnZ2VyIGV4dGVuZHMgVG5wSGVscGVycyB7XG5cbiAgc3RhdGljIFNZTUJPTCA9IHtcbiAgICBJTkRFWF9TV0c6IFN5bWJvbCgpLFxuICAgIE9VVFBVVF9GT0xERVI6IFN5bWJvbCgpXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdXRwdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBzdGF0aWMgYXBpczogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsW107XG4gIHN0YXRpYyBwcmVwYXJlUGF0aHMoYXBpczogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsW10sIG91dHB1dEJhc2U6IHN0cmluZykge1xuICAgIHRoaXMub3V0cHV0ID0gYCR7cHJvY2Vzcy5jd2QoKX0vJHtvdXRwdXRCYXNlfWBcbiAgICB0aGlzLmFwaXMgPSBhcGlzO1xuICB9XG5cbiAgc3RhdGljIHByZXBhcmVNb2RlbChzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgaW5kZXhTd2c6IG51bWJlciwgaXNIdHRwc0VuYWJsZTogYm9vbGVhbikge1xuICAgIHN3Z1t0aGlzLlNZTUJPTC5JTkRFWF9TV0ddID0gaW5kZXhTd2c7XG5cbiAgICBzd2cuaG9zdCA9IHN3Zy5ob3N0ICYmIChpc0h0dHBzRW5hYmxlID8gJ2h0dHBzJyA6ICdodHRwJykgKyBgOi8vJHtzd2cuaG9zdC5yZXBsYWNlKC86WzAtOV0qL2csICcnKX1gXG4gICAgaWYgKCFzd2cuYmFzZVBhdGgpIHtcbiAgICAgIHN3Zy5iYXNlUGF0aCA9ICcnXG4gICAgfVxuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbiAgc3RhdGljIGdldCBzZXJ2aWNlRnJvbVRhZygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbENsYXNzTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4ge1xuICAgICAgICAgIHN3Zy50YWdzLmZvckVhY2godGFnID0+IHsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmFtZXMucHVzaChzZWxmLnNlcnZpY2VGcm9tVGFnLmNsYXNzTmFtZShzd2csIHRhZykpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZShzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBfLnVwcGVyRmlyc3QoXy5jYW1lbENhc2UodGFnLm5hbWUpKSArICdTZXJ2aWNlJztcbiAgICAgICAgcmV0dXJuIGAke2dyb3VwRm9sZGVyTmFtZX0ke2NsYXNzTmFtZS5yZXBsYWNlKC9cXC8vZywgJycpfWA7XG4gICAgICB9LFxuICAgICAgYWJzb2x1dGVGaWxlUGF0aChzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG5cbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3Zyl9LyR7c2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpfS50c2A7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBlbmRwb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5tYXAoc3dnID0+IHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfTonJHtzd2cuaG9zdH0nYFxuICAgIH0pXG4gIH1cblxuXG5cbiAgc3RhdGljIGdldCBhYnNvbHV0ZVBhdGgoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cblxuICAgIHJldHVybiB7XG4gICAgICBnZXQgb3V0cHV0KCkge1xuICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgUGF0aEZpbGVfaW5kZXhfdHMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L2luZGV4LnRzYDtcbiAgICAgIH0sXG4gICAgICBnZXQgUGF0aEZpbGVfbW9kdWxlX3RzKCkge1xuICAgICAgICBjb25zdCBBUElwYXRoID0gc2VsZi5vdXRwdXQ7XG4gICAgICAgIHJldHVybiBgJHtBUElwYXRofS9tb2R1bGUudHNgO1xuICAgICAgfSxcblxuICAgICAgZ2V0IFBhdGhGb2xkZXJfc2VydmljZXMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L3NlcnZpY2VzYDtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBQYXRoRmlsZV9zZXJ2aWNlc19pbmRleF90cygpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXN9L2luZGV4LnRzYDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc30vJHtncm91cEZvbGRlck5hbWV9YDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGaWxlX3NlcnZpY2VzX2dyb3VwTmFtZV9pbmRleF90cyhzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vaW5kZXgudHNgO1xuICAgICAgfSxcblxuICAgICAgUGF0aEZpbGVfc2VydmljZXNfZ3JvdXBOQW1lX3NlcnZpY2VOYW1lX3RzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUZpbGVOYW1lID0gc2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpO1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vJHtzZXJ2aWNlRmlsZU5hbWV9LnRzYDtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ3JvdXBGcm9tSlNPTigpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGFsbEdyb3VwTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4geyAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5hbWVzLnB1c2goc2VsZi5ncm91cEZyb21KU09OLmZvbGRlck5hbWUoc3dnKSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGZvbGRlck5hbWUoc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGg6IHN0cmluZyA9IHN3Zy5iYXNlUGF0aDtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHN3Z1tzZWxmLlNZTUJPTC5JTkRFWF9TV0ddO1xuICAgICAgICByZXR1cm4gXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKGJhc2VQYXRoLnRyaW0oKSA9PT0gJycgPyBganNvbiR7aW5kZXh9YCA6IGJhc2VQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZpbmRUYWdzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgY29uc3QgdGFncyA9IFtdXG4gICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzW3BdKS5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBjb25zdCBhID0gc3dnLnBhdGhzW3BdW21dO1xuICAgICAgICBpZiAoXy5pc0FycmF5KGEudGFncykpIHtcbiAgICAgICAgICBhLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICAgICAgICAgICAgaWYgKHRhZ3MuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdGFnKS5sZW5ndGggPT09IDApIHsgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGFncy5wdXNoKHsgbmFtZTogdGFnIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgICByZXR1cm4gdGFncztcbiAgfVxuXG5cblxuXG5cblxuICAvKipcbiAgICogVG8gZ2VuZXJhdGUgZ2V0L2Jvb2tzL3tpZH0gPT4gZ2V0X2Jvb2tzX19pZF9cbiAgICovXG4gIHN0YXRpYyBjbGVhblBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvey9nLCBcIl9cIikucmVwbGFjZSgvfS9nLCBcIl9cIikucmVwbGFjZSgvXFwvL2csIFwiX1wiKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbiAgfVxuXG5cbiAgc3RhdGljIGNsZWFuUGF0aE1vZGVsKHBhdGhNb2RlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGhNb2RlbC5yZXBsYWNlKC9cXC97L2csICcvOicpLnJlcGxhY2UoL30vZywgJycpO1xuICB9XG5cblxuICBzdGF0aWMgc3dhZ2dlclR5cGVUb0pTKHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJpbnRlZ2VyXCIgfCBcImJvb2xlYW5cIiB8IFwiYXJyYXlcIiB8IFwiZmlsZVwiLCBpdGVtc1R5cGU6IGFueSA9ICdhbnknKSB7XG4gICAgcmV0dXJuICh0eXBlID09PSAnaW50ZWdlcicpID8gJ251bWJlcidcbiAgICAgIDogKHR5cGUgPT09ICdhcnJheScpID8gIWl0ZW1zVHlwZSA/ICdhbnknIDogYCR7dGhpcy5zd2FnZ2VyVHlwZVRvSlMoaXRlbXNUeXBlKX1bXWBcbiAgICAgICAgOiAodHlwZSA9PT0gJ2ZpbGUnKSA/ICdhbnknIDogdHlwZTtcbiAgfVxuXG5cblxuICBzdGF0aWMgZ2V0T2JqZWN0RGVmaW5pdGlvbihyZWY6IHN0cmluZywgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwsIGRlZXAgPSAwKTogc3RyaW5nIHtcbiAgICBpZiAoZGVlcCA9PSAxKSByZXR1cm4gJyc7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdCYWQganNvbiAkcmVmIGluc2lkZSBzd2FnZ2VyJylcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IHJlcyA9ICcnO1xuICAgIHJlZiA9IHJlZi5yZXBsYWNlKCcjLycsICcnKS5yZXBsYWNlKC9cXC8vZywgJy4nKTtcblxuICAgIGxldCBvYmo6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJEZWYgPSA8TW9kZWxzLlN3YWdnZXIuU3dhZ2dlckRlZj5fLmdldChzd2csIHJlZik7XG5cblxuXG5cblxuXG5cblxuXG4gICAgXy5mb3JPd24ob2JqLnByb3BlcnRpZXMsICh2LCBrKSA9PiB7XG5cbiAgICAgIGlmICh2LiRyZWYgJiYgdHlwZW9mIHYuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LiRyZWYsIHN3ZywgZGVlcCsrKSArIFwifTtcXG5cIjtcbiAgICAgIH0gZWxzZSBpZiAodi5zY2hlbWEgJiYgdi5zY2hlbWEuJHJlZiAmJiB0eXBlb2Ygdi5zY2hlbWEuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LnNjaGVtYS4kcmVmLCBzd2csIGRlZXArKykgKyBcIn07XFxuXCI7XG5cbiAgICAgIH0gZWxzZSBpZiAodi5pdGVtcyAmJiB2Lml0ZW1zLiRyZWYgJiYgdHlwZW9mIHYuaXRlbXMuJHJlZiA9PT0gXCJzdHJpbmdcIiAmJiB2LnR5cGUgJiYgdi50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9W107XFxuXCI7XG5cblxuICAgICAgfSBlbHNlIGlmICh2Lml0ZW1zICYmIHYuaXRlbXMuJHJlZiAmJiB0eXBlb2Ygdi5pdGVtcy4kcmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9O1xcblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzUmVxdWlyZWQgPSAob2JqLnJlcXVpcmVkICYmIG9iai5yZXF1aXJlZCBpbnN0YW5jZW9mIEFycmF5ICYmIG9iai5yZXF1aXJlZC5maWx0ZXIobyA9PiBvID09PSBrKS5sZW5ndGggPiAwKVxuICAgICAgICBsZXQgdHlwZSA9ICh2LmVudW0gJiYgdi5lbnVtIGluc3RhbmNlb2YgQXJyYXkgJiYgdi5lbnVtLmxlbmd0aCA+IDApXG4gICAgICAgICAgPyB2LmVudW0ubWFwKGUgPT4gJ1wiJyArIGUgKyAnXCInKS5qb2luKCd8JykgOiB0aGlzLnN3YWdnZXJUeXBlVG9KUyh2LnR5cGUsIHYuaXRlbXMgPyB2Lml0ZW1zLnR5cGUgOiAnYW55Jyk7XG5cbiAgICAgICAgcmVzICs9IGsgKyAoIWlzUmVxdWlyZWQgPyAnPycgOiBcIlwiKSArIFwiOlwiICsgdHlwZSArIFwiO1xcblwiXG4gICAgICB9XG4gICAgfSk7XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHJpdmF0ZSBwYXRoZXMgPSB7XG4gICAqICAgICAgZ2V0X2FsbF9jb21wYW5pZXM6IG5ldyBTaW1wbGVSZXNvdXJjZTxcbiAgICogICAgICAgICAgc3RyaW5nLCBBLCBUQSwgUlAgZXh0ZW5kcyBPYmplY3QsIFFQIGV4dGVuZHMgUmVzdC5VcmxQYXJhbXM+KGVuZHBvaW50LCBtb2RlbCksXG4gICAqICAgICAgZ2V0X2J5aWRfY29tcGFuaWVzOiBuZXcgU2ltcGxlUmVzb3VyY2U8XG4gICAqICAgICAgICAgIHN0cmluZywgQSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIFJlc3QuVXJsUGFyYW1zPihlbmRwb2ludCwgbW9kZWwpXG4gICAqIH1cbiAgICovXG4gIHN0YXRpYyBnZXRBbmd1bGFyUHJpdmF0ZVBhdGhlc0J5VGFnKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpOiBzdHJpbmcge1xuICAgIGxldCByZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGJhc2UgPSBzd2cuYmFzZVBhdGgucmVwbGFjZSgnLycsICcnKTtcblxuICAgIGxldCBwYXRoZXM6IE9iamVjdCA9IHt9O1xuICAgIF8uZm9yT3duKHN3Zy5wYXRocywgKHYsIGspID0+IHtcbiAgICAgIF8uZm9yT3duKHYsICh2MiwgazIpID0+IHtcbiAgICAgICAgaWYgKF8uaXNBcnJheSh2Mi50YWdzKSAmJiB2Mi50YWdzLmZpbHRlcihmID0+IGYgPT09IHRhZy5uYW1lKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IHJlc3AgPSB2Mi5yZXNwb25zZXNbJzIwMCddICYmIHYyLnJlc3BvbnNlc1snMjAwJ10uc2NoZW1hO1xuXG5cblxuXG4gICAgICAgICAgaWYgKHBhdGhlc1trXSA9PT0gdm9pZCAwKSBwYXRoZXNba10gPSB7fTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRSZXNwb25zZVR5cGUocmVzcCwgc3dnKTtcblxuICAgICAgICAgIGlmICh0eXBlLmxlbmd0aCA+IDMgJiYgdHlwZS5jaGFyQXQodHlwZS5sZW5ndGggLSAxKSA9PT0gJ10nICYmIHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMikgPT09ICdbJ1xuICAgICAgICAgICAgJiYgIXBhdGhlc1trXVsnYXJyYXknXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydhcnJheSddID0gdHlwZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGsyICE9PSAnZGVsZXRlJyAmJiAhcGF0aGVzW2tdWydzaW5nbGUnXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydzaW5nbGUnXSA9IHR5cGU7XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBsZXQgcGF0aFJlc291cmNlczogTW9kZWxzLlBhdGhSZXNvdXJjZVtdID0gW107XG5cbiAgICBfLmZvck93bihwYXRoZXMsICh2LCBwKSA9PiB7XG5cbiAgICAgIHBhdGhSZXNvdXJjZXMucHVzaCh7XG4gICAgICAgIGNsZWFuX3BhdGg6IHRoaXMuY2xlYW5QYXRoKHApLFxuICAgICAgICBtb2RlbDogdGhpcy5jbGVhblBhdGhNb2RlbChwKSxcbiAgICAgICAgZW5kcG9pbnQ6IHN3Zy5iYXNlUGF0aCxcbiAgICAgICAgc2luZ2xlTW9kZWxUeXBlOiAhdlsnc2luZ2xlJ10gPyAnYW55JyA6IHZbJ3NpbmdsZSddLFxuICAgICAgICBtdWx0aXBsZU1vZGVsVHlwZTogIXZbJ2FycmF5J10gPyAnYW55JyA6IHZbJ2FycmF5J10sXG4gICAgICAgIHF1ZXJ5UGFyYW1zVHlwZTogJ2FueScsXG4gICAgICAgIHBhdGhQYXJhbXNUeXBlOiAnYW55J1xuICAgICAgfSlcbiAgICB9KVxuXG5cbiAgICBwYXRoUmVzb3VyY2VzLmZvckVhY2gocCA9PiB7XG4gICAgICByZXMucHVzaChgJHtwLmNsZWFuX3BhdGh9OiBuZXcgU2ltcGxlUmVzb3VyY2U8XFxuJHtwLnNpbmdsZU1vZGVsVHlwZX0sXFxuJHtwLm11bHRpcGxlTW9kZWxUeXBlfVxcbj4oIE5nMlJlc3RHZW5Nb2R1bGUuZW5wb2ludFVybHMuJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfSwgJyR7cC5tb2RlbH0nIClgKTtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGBwcml2YXRlIHBhdGhlcyA9IHsgXFxuJHtyZXMuam9pbignLFxcbicpfVxcbn07YFxuICB9XG5cblxuICAvKlxuICAgc2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL0NvbXBhbnlEVE9cIlxuICAgICAgfVxuICB9XG5cbiAgXCJzY2hlbWFcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9Db21wYW55RFRPXCJcbiAgfVxuICAgKi9cblxuICBzdGF0aWMgZ2V0UmVzcG9uc2VUeXBlKG86IE1vZGVscy5Td2FnZ2VyLk9ialNjaGVtYSwgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICBsZXQgcmVzID0gJ3t9IHwgYW55JztcbiAgICBpZiAobyAmJiBvLiRyZWYgJiYgdHlwZW9mIG8uJHJlZiA9PT0gJ3N0cmluZycgJiYgby4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uJHJlZiwgc3dnKSArIFwifVwiO1xuXG4gICAgfSBlbHNlIGlmIChvICYmIG8udHlwZSA9PT0gJ2FycmF5JyAmJiBvLml0ZW1zICYmIG8uaXRlbXMuJHJlZiAmJlxuICAgICAgdHlwZW9mIG8uaXRlbXMuJHJlZiA9PT0gJ3N0cmluZycgJiYgby5pdGVtcy4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uaXRlbXMuJHJlZiwgc3dnKSArIFwifVtdXCI7XG5cbiAgICB9XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgcHJpdmF0ZSBzdGF0aWMgY291bnQxID0gMDtcblxuICBzdGF0aWMgcmVjcmVhdGVTdW1tYXJ5KHN1bW1hcnk6IHN0cmluZykge1xuXG5cblxuICAgIHJldHVybiBzdW1tYXJ5O1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdC1zd2FnZ2VyLWdlbmVyYXRvciBsaWIvaGVscGVycy50cyJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { CoreHelpers, _ } from 'tnp-core/browser';
2
2
 
3
- class Helpers extends CoreHelpers {
3
+ class HelpersSwagger extends CoreHelpers {
4
4
  static { this.SYMBOL = {
5
5
  INDEX_SWG: Symbol(),
6
6
  OUTPUT_FOLDER: Symbol()
@@ -38,7 +38,6 @@ class Helpers extends CoreHelpers {
38
38
  /* */
39
39
  /* */
40
40
  /* */
41
- /* */
42
41
  static get serviceFromTag() {
43
42
  const self = this;
44
43
  return {
@@ -195,7 +194,7 @@ class Helpers extends CoreHelpers {
195
194
  _.forOwn(v, (v2, k2) => {
196
195
  if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {
197
196
  let resp = v2.responses['200'] && v2.responses['200'].schema;
198
- if (pathes[k] === undefined)
197
+ if (pathes[k] === void 0)
199
198
  pathes[k] = {}; // @ts-ignore
200
199
  let type = this.getResponseType(resp, swg);
201
200
  if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['
@@ -393,5 +392,5 @@ class Helpers extends CoreHelpers {
393
392
  * Generated bundle index. Do not edit.
394
393
  */
395
394
 
396
- export { Helpers };
395
+ export { HelpersSwagger };
397
396
  //# sourceMappingURL=ng2-rest-swagger-generator.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng2-rest-swagger-generator.mjs","sources":["../../../tmp-libs-for-bundle/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/lib/helpers.ts","../../../tmp-libs-for-bundle/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/lib/index.ts","../../../tmp-libs-for-bundle/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/ng2-rest-swagger-generator.ts"],"sourcesContent":["\nimport { path, /* */ /* */ _ } from 'tnp-core/browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Models } from './models';\nimport { CoreHelpers as TnpHelpers } from 'tnp-core/browser';\n\n\n\n\nexport class Helpers extends TnpHelpers {\n\n static SYMBOL = {\n INDEX_SWG: Symbol(),\n OUTPUT_FOLDER: Symbol()\n }\n\n private static output: string;\n private static apis: Models.Swagger.SwaggerModel[];\n static preparePaths(apis: Models.Swagger.SwaggerModel[], outputBase: string) {\n this.output = `${process.cwd()}/${outputBase}`\n this.apis = apis;\n }\n\n static prepareModel(swg: Models.Swagger.SwaggerModel, indexSwg: number, isHttpsEnable: boolean) {\n swg[this.SYMBOL.INDEX_SWG] = indexSwg;\n\n swg.host = swg.host && (isHttpsEnable ? 'https' : 'http') + `://${swg.host.replace(/:[0-9]*/g, '')}`\n if (!swg.basePath) {\n swg.basePath = ''\n }\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n static get serviceFromTag() {\n const self = this;\n\n\n return {\n allClassNames() {\n const names = []\n self.apis.map(swg => {\n swg.tags.forEach(tag => { // @ts-ignore\n names.push(self.serviceFromTag.className(swg, tag))\n })\n })\n return names;\n },\n className(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n const groupFolderName = self.groupFromJSON.folderName(swg)\n\n const className = _.upperFirst(_.camelCase(tag.name)) + 'Service';\n return `${groupFolderName}${className.replace(/\\//g, '')}`;\n },\n absoluteFilePath(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/${self.serviceFromTag.className(swg, tag)}.ts`;\n }\n }\n }\n\n static get endpoints() {\n return this.apis.map(swg => {\n return `${this.groupFromJSON.folderName(swg)}:'${swg.host}'`\n })\n }\n\n\n\n static get absolutePath() {\n const self = this;\n\n\n return {\n get output() {\n return self.output;\n },\n\n get PathFile_index_ts() {\n const APIpath = self.output;\n return `${APIpath}/index.ts`;\n },\n get PathFile_module_ts() {\n const APIpath = self.output;\n return `${APIpath}/module.ts`;\n },\n\n get PathFolder_services() {\n const APIpath = self.output;\n return `${APIpath}/services`;\n },\n\n get PathFile_services_index_ts() {\n return `${self.absolutePath.PathFolder_services}/index.ts`;\n },\n\n PathFolder_services_groupName(swg: Models.Swagger.SwaggerModel) {\n const groupFolderName = self.groupFromJSON.folderName(swg)\n\n return `${self.absolutePath.PathFolder_services}/${groupFolderName}`;\n },\n\n PathFile_services_groupName_index_ts(swg: Models.Swagger.SwaggerModel) {\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/index.ts`;\n },\n\n PathFile_services_groupNAme_serviceName_ts(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n const serviceFileName = self.serviceFromTag.className(swg, tag);\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/${serviceFileName}.ts`;\n }\n\n }\n }\n\n static get groupFromJSON() {\n const self = this;\n return {\n get allGroupNames() {\n const names = []\n self.apis.map(swg => { // @ts-ignore\n names.push(self.groupFromJSON.folderName(swg))\n })\n return names;\n },\n folderName(swg: Models.Swagger.SwaggerModel) {\n const basePath: string = swg.basePath;\n const index: number = swg[self.SYMBOL.INDEX_SWG];\n return _.upperFirst(_.camelCase(basePath.trim() === '' ? `json${index}` : basePath));\n }\n }\n }\n\n static findTags(swg: Models.Swagger.SwaggerModel) {\n const tags = []\n Object.keys(swg.paths).forEach(p => {\n Object.keys(swg.paths[p]).forEach(m => {\n const a = swg.paths[p][m];\n if (_.isArray(a.tags)) {\n a.tags.forEach(tag => {\n if (tags.filter(({ name }) => name === tag).length === 0) { // @ts-ignore\n tags.push({ name: tag })\n }\n });\n }\n })\n })\n return tags;\n }\n\n\n\n\n\n\n /**\n * To generate get/books/{id} => get_books__id_\n */\n static cleanPath(path: string) {\n return path.replace(/{/g, \"_\").replace(/}/g, \"_\").replace(/\\//g, \"_\").replace(/-/g, \"_\");\n }\n\n\n static cleanPathModel(pathModel: string) {\n return pathModel.replace(/\\/{/g, '/:').replace(/}/g, '');\n }\n\n\n static swaggerTypeToJS(type: \"string\" | \"number\" | \"integer\" | \"boolean\" | \"array\" | \"file\", itemsType: any = 'any') {\n return (type === 'integer') ? 'number'\n : (type === 'array') ? !itemsType ? 'any' : `${this.swaggerTypeToJS(itemsType)}[]`\n : (type === 'file') ? 'any' : type;\n }\n\n\n\n static getObjectDefinition(ref: string, swg: Models.Swagger.SwaggerModel, deep = 0): string {\n if (deep == 1) return '';\n if (!ref) {\n console.log('Bad json $ref inside swagger')\n return '';\n }\n let res = '';\n ref = ref.replace('#/', '').replace(/\\//g, '.');\n\n let obj: Models.Swagger.SwaggerDef = <Models.Swagger.SwaggerDef>_.get(swg, ref);\n\n\n\n\n\n\n\n\n\n _.forOwn(obj.properties, (v, k) => {\n\n if (v.$ref && typeof v.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.$ref, swg, deep++) + \"};\\n\";\n } else if (v.schema && v.schema.$ref && typeof v.schema.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.schema.$ref, swg, deep++) + \"};\\n\";\n\n } else if (v.items && v.items.$ref && typeof v.items.$ref === \"string\" && v.type && v.type === 'array') {\n res += k + \":{\" + this.getObjectDefinition(v.items.$ref, swg, deep++) + \"}[];\\n\";\n\n\n } else if (v.items && v.items.$ref && typeof v.items.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.items.$ref, swg, deep++) + \"};\\n\";\n } else {\n let isRequired = (obj.required && obj.required instanceof Array && obj.required.filter(o => o === k).length > 0)\n let type = (v.enum && v.enum instanceof Array && v.enum.length > 0)\n ? v.enum.map(e => '\"' + e + '\"').join('|') : this.swaggerTypeToJS(v.type, v.items ? v.items.type : 'any');\n\n res += k + (!isRequired ? '?' : \"\") + \":\" + type + \";\\n\"\n }\n });\n\n\n\n return res;\n }\n\n\n\n /**\n * private pathes = {\n * get_all_companies: new SimpleResource<\n * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model),\n * get_byid_companies: new SimpleResource<\n * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model)\n * }\n */\n static getAngularPrivatePathesByTag(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag): string {\n let res: string[] = [];\n let base = swg.basePath.replace('/', '');\n\n let pathes: Object = {};\n _.forOwn(swg.paths, (v, k) => {\n _.forOwn(v, (v2, k2) => {\n if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {\n let resp = v2.responses['200'] && v2.responses['200'].schema;\n\n\n\n\n if (pathes[k] === undefined) pathes[k] = {}; // @ts-ignore\n let type = this.getResponseType(resp, swg);\n\n if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['\n && !pathes[k]['array']) {\n pathes[k]['array'] = type;\n } else if (k2 !== 'delete' && !pathes[k]['single']) {\n pathes[k]['single'] = type;\n }\n\n\n\n }\n })\n })\n\n let pathResources: Models.PathResource[] = [];\n\n _.forOwn(pathes, (v, p) => {\n\n pathResources.push({\n clean_path: this.cleanPath(p),\n model: this.cleanPathModel(p),\n endpoint: swg.basePath,\n singleModelType: !v['single'] ? 'any' : v['single'],\n multipleModelType: !v['array'] ? 'any' : v['array'],\n queryParamsType: 'any',\n pathParamsType: 'any'\n })\n })\n\n\n pathResources.forEach(p => {\n res.push(`${p.clean_path}: new SimpleResource<\\n${p.singleModelType},\\n${p.multipleModelType}\\n>( Ng2RestGenModule.enpointUrls.${this.groupFromJSON.folderName(swg)}, '${p.model}' )`);\n })\n\n return `private pathes = { \\n${res.join(',\\n')}\\n};`\n }\n\n\n /*\n schema\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/CompanyDTO\"\n }\n }\n\n \"schema\": {\n \"$ref\": \"#/definitions/CompanyDTO\"\n }\n */\n\n static getResponseType(o: Models.Swagger.ObjSchema, swg: Models.Swagger.SwaggerModel) {\n let res = '{} | any';\n if (o && o.$ref && typeof o.$ref === 'string' && o.$ref.trim() !== '') {\n res = \"{\" + this.getObjectDefinition(o.$ref, swg) + \"}\";\n\n } else if (o && o.type === 'array' && o.items && o.items.$ref &&\n typeof o.items.$ref === 'string' && o.items.$ref.trim() !== '') {\n res = \"{\" + this.getObjectDefinition(o.items.$ref, swg) + \"}[]\";\n\n }\n\n\n\n return res;\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n private static count1 = 0;\n\n static recreateSummary(summary: string) {\n\n\n\n return summary;\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest-swagger-generator lib/helpers.ts","export * from './helpers';\n\n ;({}); // @--end-of-file-for-module=ng2-rest-swagger-generator lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TnpHelpers"],"mappings":"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"}
1
+ {"version":3,"file":"ng2-rest-swagger-generator.mjs","sources":["../../../tmp-libs-for-bundle/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/lib/helpers.ts","../../../tmp-libs-for-bundle/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/lib/index.ts","../../../tmp-libs-for-bundle/ng2-rest-swagger-generator/projects/ng2-rest-swagger-generator/src/ng2-rest-swagger-generator.ts"],"sourcesContent":["\nimport { path, /* */ /* */ _ } from 'tnp-core/browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Models } from './models';\nimport { CoreHelpers as TnpHelpers } from 'tnp-core/browser';\nimport { Helpers } from 'tnp-helpers/browser';\n\n\nexport class HelpersSwagger extends TnpHelpers {\n\n static SYMBOL = {\n INDEX_SWG: Symbol(),\n OUTPUT_FOLDER: Symbol()\n }\n\n private static output: string;\n private static apis: Models.Swagger.SwaggerModel[];\n static preparePaths(apis: Models.Swagger.SwaggerModel[], outputBase: string) {\n this.output = `${process.cwd()}/${outputBase}`\n this.apis = apis;\n }\n\n static prepareModel(swg: Models.Swagger.SwaggerModel, indexSwg: number, isHttpsEnable: boolean) {\n swg[this.SYMBOL.INDEX_SWG] = indexSwg;\n\n swg.host = swg.host && (isHttpsEnable ? 'https' : 'http') + `://${swg.host.replace(/:[0-9]*/g, '')}`\n if (!swg.basePath) {\n swg.basePath = ''\n }\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n static get serviceFromTag() {\n const self = this;\n\n\n return {\n allClassNames() {\n const names = []\n self.apis.map(swg => {\n swg.tags.forEach(tag => { // @ts-ignore\n names.push(self.serviceFromTag.className(swg, tag))\n })\n })\n return names;\n },\n className(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n const groupFolderName = self.groupFromJSON.folderName(swg)\n\n const className = _.upperFirst(_.camelCase(tag.name)) + 'Service';\n return `${groupFolderName}${className.replace(/\\//g, '')}`;\n },\n absoluteFilePath(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/${self.serviceFromTag.className(swg, tag)}.ts`;\n }\n }\n }\n\n static get endpoints() {\n return this.apis.map(swg => {\n return `${this.groupFromJSON.folderName(swg)}:'${swg.host}'`\n })\n }\n\n\n\n static get absolutePath() {\n const self = this;\n\n\n return {\n get output() {\n return self.output;\n },\n\n get PathFile_index_ts() {\n const APIpath = self.output;\n return `${APIpath}/index.ts`;\n },\n get PathFile_module_ts() {\n const APIpath = self.output;\n return `${APIpath}/module.ts`;\n },\n\n get PathFolder_services() {\n const APIpath = self.output;\n return `${APIpath}/services`;\n },\n\n get PathFile_services_index_ts() {\n return `${self.absolutePath.PathFolder_services}/index.ts`;\n },\n\n PathFolder_services_groupName(swg: Models.Swagger.SwaggerModel) {\n const groupFolderName = self.groupFromJSON.folderName(swg)\n\n return `${self.absolutePath.PathFolder_services}/${groupFolderName}`;\n },\n\n PathFile_services_groupName_index_ts(swg: Models.Swagger.SwaggerModel) {\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/index.ts`;\n },\n\n PathFile_services_groupNAme_serviceName_ts(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag) {\n const serviceFileName = self.serviceFromTag.className(swg, tag);\n return `${self.absolutePath.PathFolder_services_groupName(swg)}/${serviceFileName}.ts`;\n }\n\n }\n }\n\n static get groupFromJSON() {\n const self = this;\n return {\n get allGroupNames() {\n const names = []\n self.apis.map(swg => { // @ts-ignore\n names.push(self.groupFromJSON.folderName(swg))\n })\n return names;\n },\n folderName(swg: Models.Swagger.SwaggerModel) {\n const basePath: string = swg.basePath;\n const index: number = swg[self.SYMBOL.INDEX_SWG];\n return _.upperFirst(_.camelCase(basePath.trim() === '' ? `json${index}` : basePath));\n }\n }\n }\n\n static findTags(swg: Models.Swagger.SwaggerModel) {\n const tags = []\n Object.keys(swg.paths).forEach(p => {\n Object.keys(swg.paths[p]).forEach(m => {\n const a = swg.paths[p][m];\n if (_.isArray(a.tags)) {\n a.tags.forEach(tag => {\n if (tags.filter(({ name }) => name === tag).length === 0) { // @ts-ignore\n tags.push({ name: tag })\n }\n });\n }\n })\n })\n return tags;\n }\n\n\n\n\n\n\n /**\n * To generate get/books/{id} => get_books__id_\n */\n static cleanPath(path: string) {\n return path.replace(/{/g, \"_\").replace(/}/g, \"_\").replace(/\\//g, \"_\").replace(/-/g, \"_\");\n }\n\n\n static cleanPathModel(pathModel: string) {\n return pathModel.replace(/\\/{/g, '/:').replace(/}/g, '');\n }\n\n\n static swaggerTypeToJS(type: \"string\" | \"number\" | \"integer\" | \"boolean\" | \"array\" | \"file\", itemsType: any = 'any') {\n return (type === 'integer') ? 'number'\n : (type === 'array') ? !itemsType ? 'any' : `${this.swaggerTypeToJS(itemsType)}[]`\n : (type === 'file') ? 'any' : type;\n }\n\n\n\n static getObjectDefinition(ref: string, swg: Models.Swagger.SwaggerModel, deep = 0): string {\n if (deep == 1) return '';\n if (!ref) {\n console.log('Bad json $ref inside swagger')\n return '';\n }\n let res = '';\n ref = ref.replace('#/', '').replace(/\\//g, '.');\n\n let obj: Models.Swagger.SwaggerDef = <Models.Swagger.SwaggerDef>_.get(swg, ref);\n\n\n\n\n\n\n\n\n\n _.forOwn(obj.properties, (v, k) => {\n\n if (v.$ref && typeof v.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.$ref, swg, deep++) + \"};\\n\";\n } else if (v.schema && v.schema.$ref && typeof v.schema.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.schema.$ref, swg, deep++) + \"};\\n\";\n\n } else if (v.items && v.items.$ref && typeof v.items.$ref === \"string\" && v.type && v.type === 'array') {\n res += k + \":{\" + this.getObjectDefinition(v.items.$ref, swg, deep++) + \"}[];\\n\";\n\n\n } else if (v.items && v.items.$ref && typeof v.items.$ref === \"string\") {\n res += k + \":{\" + this.getObjectDefinition(v.items.$ref, swg, deep++) + \"};\\n\";\n } else {\n let isRequired = (obj.required && obj.required instanceof Array && obj.required.filter(o => o === k).length > 0)\n let type = (v.enum && v.enum instanceof Array && v.enum.length > 0)\n ? v.enum.map(e => '\"' + e + '\"').join('|') : this.swaggerTypeToJS(v.type, v.items ? v.items.type : 'any');\n\n res += k + (!isRequired ? '?' : \"\") + \":\" + type + \";\\n\"\n }\n });\n\n\n\n return res;\n }\n\n\n\n /**\n * private pathes = {\n * get_all_companies: new SimpleResource<\n * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model),\n * get_byid_companies: new SimpleResource<\n * string, A, TA, RP extends Object, QP extends Rest.UrlParams>(endpoint, model)\n * }\n */\n static getAngularPrivatePathesByTag(swg: Models.Swagger.SwaggerModel, tag: Models.Swagger.SwaggerTag): string {\n let res: string[] = [];\n let base = swg.basePath.replace('/', '');\n\n let pathes: Object = {};\n _.forOwn(swg.paths, (v, k) => {\n _.forOwn(v, (v2, k2) => {\n if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {\n let resp = v2.responses['200'] && v2.responses['200'].schema;\n\n\n\n\n if (pathes[k] === void 0) pathes[k] = {}; // @ts-ignore\n let type = this.getResponseType(resp, swg);\n\n if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['\n && !pathes[k]['array']) {\n pathes[k]['array'] = type;\n } else if (k2 !== 'delete' && !pathes[k]['single']) {\n pathes[k]['single'] = type;\n }\n\n\n\n }\n })\n })\n\n let pathResources: Models.PathResource[] = [];\n\n _.forOwn(pathes, (v, p) => {\n\n pathResources.push({\n clean_path: this.cleanPath(p),\n model: this.cleanPathModel(p),\n endpoint: swg.basePath,\n singleModelType: !v['single'] ? 'any' : v['single'],\n multipleModelType: !v['array'] ? 'any' : v['array'],\n queryParamsType: 'any',\n pathParamsType: 'any'\n })\n })\n\n\n pathResources.forEach(p => {\n res.push(`${p.clean_path}: new SimpleResource<\\n${p.singleModelType},\\n${p.multipleModelType}\\n>( Ng2RestGenModule.enpointUrls.${this.groupFromJSON.folderName(swg)}, '${p.model}' )`);\n })\n\n return `private pathes = { \\n${res.join(',\\n')}\\n};`\n }\n\n\n /*\n schema\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/CompanyDTO\"\n }\n }\n\n \"schema\": {\n \"$ref\": \"#/definitions/CompanyDTO\"\n }\n */\n\n static getResponseType(o: Models.Swagger.ObjSchema, swg: Models.Swagger.SwaggerModel) {\n let res = '{} | any';\n if (o && o.$ref && typeof o.$ref === 'string' && o.$ref.trim() !== '') {\n res = \"{\" + this.getObjectDefinition(o.$ref, swg) + \"}\";\n\n } else if (o && o.type === 'array' && o.items && o.items.$ref &&\n typeof o.items.$ref === 'string' && o.items.$ref.trim() !== '') {\n res = \"{\" + this.getObjectDefinition(o.items.$ref, swg) + \"}[]\";\n\n }\n\n\n\n return res;\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n private static count1 = 0;\n\n static recreateSummary(summary: string) {\n\n\n\n return summary;\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest-swagger-generator lib/helpers.ts","export * from './helpers';\n\n ;({}); // @--end-of-file-for-module=ng2-rest-swagger-generator lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TnpHelpers"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import { Models } from './models';
3
3
  import { CoreHelpers as TnpHelpers } from 'tnp-core/browser';
4
- export declare class Helpers extends TnpHelpers {
4
+ export declare class HelpersSwagger extends TnpHelpers {
5
5
  static SYMBOL: {
6
6
  INDEX_SWG: symbol;
7
7
  OUTPUT_FOLDER: symbol;
@@ -1,6 +1,6 @@
1
1
  import { /* */ /* */ _ } from 'tnp-core/browser'; /* */
2
2
  import { CoreHelpers as TnpHelpers } from 'tnp-core/browser';
3
- class Helpers extends TnpHelpers {
3
+ class HelpersSwagger extends TnpHelpers {
4
4
  static { this.SYMBOL = {
5
5
  INDEX_SWG: Symbol(),
6
6
  OUTPUT_FOLDER: Symbol()
@@ -38,7 +38,6 @@ class Helpers extends TnpHelpers {
38
38
  /* */
39
39
  /* */
40
40
  /* */
41
- /* */
42
41
  static get serviceFromTag() {
43
42
  const self = this;
44
43
  return {
@@ -195,7 +194,7 @@ class Helpers extends TnpHelpers {
195
194
  _.forOwn(v, (v2, k2) => {
196
195
  if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {
197
196
  let resp = v2.responses['200'] && v2.responses['200'].schema;
198
- if (pathes[k] === undefined)
197
+ if (pathes[k] === void 0)
199
198
  pathes[k] = {}; // @ts-ignore
200
199
  let type = this.getResponseType(resp, swg);
201
200
  if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['
@@ -383,7 +382,7 @@ class Helpers extends TnpHelpers {
383
382
  return summary;
384
383
  }
385
384
  }
386
- export { Helpers };
385
+ export { HelpersSwagger };
387
386
  ;
388
387
  ({}); // @--end-of-file-for-module=ng2-rest-swagger-generator lib/helpers.ts
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3IvcHJvamVjdHMvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3Ivc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVSxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDLENBQUEsS0FBSztBQVFuRSxPQUFPLEVBQUUsV0FBVyxJQUFJLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzdELE1BQWEsT0FBUSxTQUFRLFVBQVU7YUFFOUIsV0FBTSxHQUFHO1FBQ2QsU0FBUyxFQUFFLE1BQU0sRUFBRTtRQUNuQixhQUFhLEVBQUUsTUFBTSxFQUFFO0tBQ3hCLENBQUE7SUFJRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW1DLEVBQUUsVUFBa0I7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFnQyxFQUFFLFFBQWdCLEVBQUUsYUFBc0I7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRXRDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMs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SSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEUsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBRWpFO1FBSUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUgsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUdMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSzthQUVZLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFFMUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFlO1FBSXBDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O1NBcGRVLE9BQU87QUFvZ0JuQixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHNFQUFzRSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgICBwYXRoLCAvKiAqLyAvKiAqLyAgICAgIF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IENvcmVIZWxwZXJzIGFzIFRucEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuXG5cblxuZXhwb3J0IGNsYXNzIEhlbHBlcnMgZXh0ZW5kcyBUbnBIZWxwZXJzIHtcblxuICBzdGF0aWMgU1lNQk9MID0ge1xuICAgIElOREVYX1NXRzogU3ltYm9sKCksXG4gICAgT1VUUFVUX0ZPTERFUjogU3ltYm9sKClcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG91dHB1dDogc3RyaW5nO1xuICBwcml2YXRlIHN0YXRpYyBhcGlzOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWxbXTtcbiAgc3RhdGljIHByZXBhcmVQYXRocyhhcGlzOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWxbXSwgb3V0cHV0QmFzZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vdXRwdXQgPSBgJHtwcm9jZXNzLmN3ZCgpfS8ke291dHB1dEJhc2V9YFxuICAgIHRoaXMuYXBpcyA9IGFwaXM7XG4gIH1cblxuICBzdGF0aWMgcHJlcGFyZU1vZGVsKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCBpbmRleFN3ZzogbnVtYmVyLCBpc0h0dHBzRW5hYmxlOiBib29sZWFuKSB7XG4gICAgc3dnW3RoaXMuU1lNQk9MLklOREVYX1NXR10gPSBpbmRleFN3ZztcblxuICAgIHN3Zy5ob3N0ID0gc3dnLmhvc3QgJiYgKGlzSHR0cHNFbmFibGUgPyAnaHR0cHMnIDogJ2h0dHAnKSArIGA6Ly8ke3N3Zy5ob3N0LnJlcGxhY2UoLzpbMC05XSovZywgJycpfWBcbiAgICBpZiAoIXN3Zy5iYXNlUGF0aCkge1xuICAgICAgc3dnLmJhc2VQYXRoID0gJydcbiAgICB9XG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbiAgc3RhdGljIGdldCBzZXJ2aWNlRnJvbVRhZygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbENsYXNzTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4ge1xuICAgICAgICAgIHN3Zy50YWdzLmZvckVhY2godGFnID0+IHsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmFtZXMucHVzaChzZWxmLnNlcnZpY2VGcm9tVGFnLmNsYXNzTmFtZShzd2csIHRhZykpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZShzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBfLnVwcGVyRmlyc3QoXy5jYW1lbENhc2UodGFnLm5hbWUpKSArICdTZXJ2aWNlJztcbiAgICAgICAgcmV0dXJuIGAke2dyb3VwRm9sZGVyTmFtZX0ke2NsYXNzTmFtZS5yZXBsYWNlKC9cXC8vZywgJycpfWA7XG4gICAgICB9LFxuICAgICAgYWJzb2x1dGVGaWxlUGF0aChzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG5cbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3Zyl9LyR7c2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpfS50c2A7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBlbmRwb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5tYXAoc3dnID0+IHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfTonJHtzd2cuaG9zdH0nYFxuICAgIH0pXG4gIH1cblxuXG5cbiAgc3RhdGljIGdldCBhYnNvbHV0ZVBhdGgoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cblxuICAgIHJldHVybiB7XG4gICAgICBnZXQgb3V0cHV0KCkge1xuICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgUGF0aEZpbGVfaW5kZXhfdHMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L2luZGV4LnRzYDtcbiAgICAgIH0sXG4gICAgICBnZXQgUGF0aEZpbGVfbW9kdWxlX3RzKCkge1xuICAgICAgICBjb25zdCBBUElwYXRoID0gc2VsZi5vdXRwdXQ7XG4gICAgICAgIHJldHVybiBgJHtBUElwYXRofS9tb2R1bGUudHNgO1xuICAgICAgfSxcblxuICAgICAgZ2V0IFBhdGhGb2xkZXJfc2VydmljZXMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L3NlcnZpY2VzYDtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBQYXRoRmlsZV9zZXJ2aWNlc19pbmRleF90cygpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXN9L2luZGV4LnRzYDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc30vJHtncm91cEZvbGRlck5hbWV9YDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGaWxlX3NlcnZpY2VzX2dyb3VwTmFtZV9pbmRleF90cyhzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vaW5kZXgudHNgO1xuICAgICAgfSxcblxuICAgICAgUGF0aEZpbGVfc2VydmljZXNfZ3JvdXBOQW1lX3NlcnZpY2VOYW1lX3RzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUZpbGVOYW1lID0gc2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpO1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vJHtzZXJ2aWNlRmlsZU5hbWV9LnRzYDtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ3JvdXBGcm9tSlNPTigpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGFsbEdyb3VwTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4geyAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5hbWVzLnB1c2goc2VsZi5ncm91cEZyb21KU09OLmZvbGRlck5hbWUoc3dnKSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGZvbGRlck5hbWUoc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGg6IHN0cmluZyA9IHN3Zy5iYXNlUGF0aDtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHN3Z1tzZWxmLlNZTUJPTC5JTkRFWF9TV0ddO1xuICAgICAgICByZXR1cm4gXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKGJhc2VQYXRoLnRyaW0oKSA9PT0gJycgPyBganNvbiR7aW5kZXh9YCA6IGJhc2VQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZpbmRUYWdzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgY29uc3QgdGFncyA9IFtdXG4gICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzW3BdKS5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBjb25zdCBhID0gc3dnLnBhdGhzW3BdW21dO1xuICAgICAgICBpZiAoXy5pc0FycmF5KGEudGFncykpIHtcbiAgICAgICAgICBhLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICAgICAgICAgICAgaWYgKHRhZ3MuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdGFnKS5sZW5ndGggPT09IDApIHsgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGFncy5wdXNoKHsgbmFtZTogdGFnIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgICByZXR1cm4gdGFncztcbiAgfVxuXG5cblxuXG5cblxuICAvKipcbiAgICogVG8gZ2VuZXJhdGUgZ2V0L2Jvb2tzL3tpZH0gPT4gZ2V0X2Jvb2tzX19pZF9cbiAgICovXG4gIHN0YXRpYyBjbGVhblBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvey9nLCBcIl9cIikucmVwbGFjZSgvfS9nLCBcIl9cIikucmVwbGFjZSgvXFwvL2csIFwiX1wiKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbiAgfVxuXG5cbiAgc3RhdGljIGNsZWFuUGF0aE1vZGVsKHBhdGhNb2RlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGhNb2RlbC5yZXBsYWNlKC9cXC97L2csICcvOicpLnJlcGxhY2UoL30vZywgJycpO1xuICB9XG5cblxuICBzdGF0aWMgc3dhZ2dlclR5cGVUb0pTKHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJpbnRlZ2VyXCIgfCBcImJvb2xlYW5cIiB8IFwiYXJyYXlcIiB8IFwiZmlsZVwiLCBpdGVtc1R5cGU6IGFueSA9ICdhbnknKSB7XG4gICAgcmV0dXJuICh0eXBlID09PSAnaW50ZWdlcicpID8gJ251bWJlcidcbiAgICAgIDogKHR5cGUgPT09ICdhcnJheScpID8gIWl0ZW1zVHlwZSA/ICdhbnknIDogYCR7dGhpcy5zd2FnZ2VyVHlwZVRvSlMoaXRlbXNUeXBlKX1bXWBcbiAgICAgICAgOiAodHlwZSA9PT0gJ2ZpbGUnKSA/ICdhbnknIDogdHlwZTtcbiAgfVxuXG5cblxuICBzdGF0aWMgZ2V0T2JqZWN0RGVmaW5pdGlvbihyZWY6IHN0cmluZywgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwsIGRlZXAgPSAwKTogc3RyaW5nIHtcbiAgICBpZiAoZGVlcCA9PSAxKSByZXR1cm4gJyc7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdCYWQganNvbiAkcmVmIGluc2lkZSBzd2FnZ2VyJylcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IHJlcyA9ICcnO1xuICAgIHJlZiA9IHJlZi5yZXBsYWNlKCcjLycsICcnKS5yZXBsYWNlKC9cXC8vZywgJy4nKTtcblxuICAgIGxldCBvYmo6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJEZWYgPSA8TW9kZWxzLlN3YWdnZXIuU3dhZ2dlckRlZj5fLmdldChzd2csIHJlZik7XG5cblxuXG5cblxuXG5cblxuXG4gICAgXy5mb3JPd24ob2JqLnByb3BlcnRpZXMsICh2LCBrKSA9PiB7XG5cbiAgICAgIGlmICh2LiRyZWYgJiYgdHlwZW9mIHYuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LiRyZWYsIHN3ZywgZGVlcCsrKSArIFwifTtcXG5cIjtcbiAgICAgIH0gZWxzZSBpZiAodi5zY2hlbWEgJiYgdi5zY2hlbWEuJHJlZiAmJiB0eXBlb2Ygdi5zY2hlbWEuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LnNjaGVtYS4kcmVmLCBzd2csIGRlZXArKykgKyBcIn07XFxuXCI7XG5cbiAgICAgIH0gZWxzZSBpZiAodi5pdGVtcyAmJiB2Lml0ZW1zLiRyZWYgJiYgdHlwZW9mIHYuaXRlbXMuJHJlZiA9PT0gXCJzdHJpbmdcIiAmJiB2LnR5cGUgJiYgdi50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9W107XFxuXCI7XG5cblxuICAgICAgfSBlbHNlIGlmICh2Lml0ZW1zICYmIHYuaXRlbXMuJHJlZiAmJiB0eXBlb2Ygdi5pdGVtcy4kcmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9O1xcblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzUmVxdWlyZWQgPSAob2JqLnJlcXVpcmVkICYmIG9iai5yZXF1aXJlZCBpbnN0YW5jZW9mIEFycmF5ICYmIG9iai5yZXF1aXJlZC5maWx0ZXIobyA9PiBvID09PSBrKS5sZW5ndGggPiAwKVxuICAgICAgICBsZXQgdHlwZSA9ICh2LmVudW0gJiYgdi5lbnVtIGluc3RhbmNlb2YgQXJyYXkgJiYgdi5lbnVtLmxlbmd0aCA+IDApXG4gICAgICAgICAgPyB2LmVudW0ubWFwKGUgPT4gJ1wiJyArIGUgKyAnXCInKS5qb2luKCd8JykgOiB0aGlzLnN3YWdnZXJUeXBlVG9KUyh2LnR5cGUsIHYuaXRlbXMgPyB2Lml0ZW1zLnR5cGUgOiAnYW55Jyk7XG5cbiAgICAgICAgcmVzICs9IGsgKyAoIWlzUmVxdWlyZWQgPyAnPycgOiBcIlwiKSArIFwiOlwiICsgdHlwZSArIFwiO1xcblwiXG4gICAgICB9XG4gICAgfSk7XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHJpdmF0ZSBwYXRoZXMgPSB7XG4gICAqICAgICAgZ2V0X2FsbF9jb21wYW5pZXM6IG5ldyBTaW1wbGVSZXNvdXJjZTxcbiAgICogICAgICAgICAgc3RyaW5nLCBBLCBUQSwgUlAgZXh0ZW5kcyBPYmplY3QsIFFQIGV4dGVuZHMgUmVzdC5VcmxQYXJhbXM+KGVuZHBvaW50LCBtb2RlbCksXG4gICAqICAgICAgZ2V0X2J5aWRfY29tcGFuaWVzOiBuZXcgU2ltcGxlUmVzb3VyY2U8XG4gICAqICAgICAgICAgIHN0cmluZywgQSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIFJlc3QuVXJsUGFyYW1zPihlbmRwb2ludCwgbW9kZWwpXG4gICAqIH1cbiAgICovXG4gIHN0YXRpYyBnZXRBbmd1bGFyUHJpdmF0ZVBhdGhlc0J5VGFnKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpOiBzdHJpbmcge1xuICAgIGxldCByZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGJhc2UgPSBzd2cuYmFzZVBhdGgucmVwbGFjZSgnLycsICcnKTtcblxuICAgIGxldCBwYXRoZXM6IE9iamVjdCA9IHt9O1xuICAgIF8uZm9yT3duKHN3Zy5wYXRocywgKHYsIGspID0+IHtcbiAgICAgIF8uZm9yT3duKHYsICh2MiwgazIpID0+IHtcbiAgICAgICAgaWYgKF8uaXNBcnJheSh2Mi50YWdzKSAmJiB2Mi50YWdzLmZpbHRlcihmID0+IGYgPT09IHRhZy5uYW1lKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IHJlc3AgPSB2Mi5yZXNwb25zZXNbJzIwMCddICYmIHYyLnJlc3BvbnNlc1snMjAwJ10uc2NoZW1hO1xuXG5cblxuXG4gICAgICAgICAgaWYgKHBhdGhlc1trXSA9PT0gdW5kZWZpbmVkKSBwYXRoZXNba10gPSB7fTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRSZXNwb25zZVR5cGUocmVzcCwgc3dnKTtcblxuICAgICAgICAgIGlmICh0eXBlLmxlbmd0aCA+IDMgJiYgdHlwZS5jaGFyQXQodHlwZS5sZW5ndGggLSAxKSA9PT0gJ10nICYmIHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMikgPT09ICdbJ1xuICAgICAgICAgICAgJiYgIXBhdGhlc1trXVsnYXJyYXknXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydhcnJheSddID0gdHlwZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGsyICE9PSAnZGVsZXRlJyAmJiAhcGF0aGVzW2tdWydzaW5nbGUnXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydzaW5nbGUnXSA9IHR5cGU7XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBsZXQgcGF0aFJlc291cmNlczogTW9kZWxzLlBhdGhSZXNvdXJjZVtdID0gW107XG5cbiAgICBfLmZvck93bihwYXRoZXMsICh2LCBwKSA9PiB7XG5cbiAgICAgIHBhdGhSZXNvdXJjZXMucHVzaCh7XG4gICAgICAgIGNsZWFuX3BhdGg6IHRoaXMuY2xlYW5QYXRoKHApLFxuICAgICAgICBtb2RlbDogdGhpcy5jbGVhblBhdGhNb2RlbChwKSxcbiAgICAgICAgZW5kcG9pbnQ6IHN3Zy5iYXNlUGF0aCxcbiAgICAgICAgc2luZ2xlTW9kZWxUeXBlOiAhdlsnc2luZ2xlJ10gPyAnYW55JyA6IHZbJ3NpbmdsZSddLFxuICAgICAgICBtdWx0aXBsZU1vZGVsVHlwZTogIXZbJ2FycmF5J10gPyAnYW55JyA6IHZbJ2FycmF5J10sXG4gICAgICAgIHF1ZXJ5UGFyYW1zVHlwZTogJ2FueScsXG4gICAgICAgIHBhdGhQYXJhbXNUeXBlOiAnYW55J1xuICAgICAgfSlcbiAgICB9KVxuXG5cbiAgICBwYXRoUmVzb3VyY2VzLmZvckVhY2gocCA9PiB7XG4gICAgICByZXMucHVzaChgJHtwLmNsZWFuX3BhdGh9OiBuZXcgU2ltcGxlUmVzb3VyY2U8XFxuJHtwLnNpbmdsZU1vZGVsVHlwZX0sXFxuJHtwLm11bHRpcGxlTW9kZWxUeXBlfVxcbj4oIE5nMlJlc3RHZW5Nb2R1bGUuZW5wb2ludFVybHMuJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfSwgJyR7cC5tb2RlbH0nIClgKTtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGBwcml2YXRlIHBhdGhlcyA9IHsgXFxuJHtyZXMuam9pbignLFxcbicpfVxcbn07YFxuICB9XG5cblxuICAvKlxuICAgc2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL0NvbXBhbnlEVE9cIlxuICAgICAgfVxuICB9XG5cbiAgXCJzY2hlbWFcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9Db21wYW55RFRPXCJcbiAgfVxuICAgKi9cblxuICBzdGF0aWMgZ2V0UmVzcG9uc2VUeXBlKG86IE1vZGVscy5Td2FnZ2VyLk9ialNjaGVtYSwgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICBsZXQgcmVzID0gJ3t9IHwgYW55JztcbiAgICBpZiAobyAmJiBvLiRyZWYgJiYgdHlwZW9mIG8uJHJlZiA9PT0gJ3N0cmluZycgJiYgby4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uJHJlZiwgc3dnKSArIFwifVwiO1xuXG4gICAgfSBlbHNlIGlmIChvICYmIG8udHlwZSA9PT0gJ2FycmF5JyAmJiBvLml0ZW1zICYmIG8uaXRlbXMuJHJlZiAmJlxuICAgICAgdHlwZW9mIG8uaXRlbXMuJHJlZiA9PT0gJ3N0cmluZycgJiYgby5pdGVtcy4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uaXRlbXMuJHJlZiwgc3dnKSArIFwifVtdXCI7XG5cbiAgICB9XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgcHJpdmF0ZSBzdGF0aWMgY291bnQxID0gMDtcblxuICBzdGF0aWMgcmVjcmVhdGVTdW1tYXJ5KHN1bW1hcnk6IHN0cmluZykge1xuXG5cblxuICAgIHJldHVybiBzdW1tYXJ5O1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdC1zd2FnZ2VyLWdlbmVyYXRvciBsaWIvaGVscGVycy50cyJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3IvcHJvamVjdHMvbmcyLXJlc3Qtc3dhZ2dlci1nZW5lcmF0b3Ivc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVSxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDLENBQUEsS0FBSztBQVFuRSxPQUFPLEVBQUUsV0FBVyxJQUFJLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTdELE1BQWEsY0FBZSxTQUFRLFVBQVU7YUFFckMsV0FBTSxHQUFHO1FBQ2QsU0FBUyxFQUFFLE1BQU0sRUFBRTtRQUNuQixhQUFhLEVBQUUsTUFBTSxFQUFFO0tBQ3hCLENBQUE7SUFJRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW1DLEVBQUUsVUFBa0I7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFnQyxFQUFFLFFBQWdCLEVBQUUsYUFBc0I7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRXRDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMs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QyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hFLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUVqRTtRQUlELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVILEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7YUFFWSxXQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBZTtRQUlwQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztTQW5kVSxjQUFjO0FBbWdCMUIsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzRUFBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7ICAgcGF0aCwgLyogKi8gLyogKi8gICAgICBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDb3JlSGVscGVycyBhcyBUbnBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWhlbHBlcnMvYnJvd3Nlcic7XG5cblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNTd2FnZ2VyIGV4dGVuZHMgVG5wSGVscGVycyB7XG5cbiAgc3RhdGljIFNZTUJPTCA9IHtcbiAgICBJTkRFWF9TV0c6IFN5bWJvbCgpLFxuICAgIE9VVFBVVF9GT0xERVI6IFN5bWJvbCgpXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdXRwdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBzdGF0aWMgYXBpczogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsW107XG4gIHN0YXRpYyBwcmVwYXJlUGF0aHMoYXBpczogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsW10sIG91dHB1dEJhc2U6IHN0cmluZykge1xuICAgIHRoaXMub3V0cHV0ID0gYCR7cHJvY2Vzcy5jd2QoKX0vJHtvdXRwdXRCYXNlfWBcbiAgICB0aGlzLmFwaXMgPSBhcGlzO1xuICB9XG5cbiAgc3RhdGljIHByZXBhcmVNb2RlbChzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgaW5kZXhTd2c6IG51bWJlciwgaXNIdHRwc0VuYWJsZTogYm9vbGVhbikge1xuICAgIHN3Z1t0aGlzLlNZTUJPTC5JTkRFWF9TV0ddID0gaW5kZXhTd2c7XG5cbiAgICBzd2cuaG9zdCA9IHN3Zy5ob3N0ICYmIChpc0h0dHBzRW5hYmxlID8gJ2h0dHBzJyA6ICdodHRwJykgKyBgOi8vJHtzd2cuaG9zdC5yZXBsYWNlKC86WzAtOV0qL2csICcnKX1gXG4gICAgaWYgKCFzd2cuYmFzZVBhdGgpIHtcbiAgICAgIHN3Zy5iYXNlUGF0aCA9ICcnXG4gICAgfVxuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbiAgc3RhdGljIGdldCBzZXJ2aWNlRnJvbVRhZygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbENsYXNzTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4ge1xuICAgICAgICAgIHN3Zy50YWdzLmZvckVhY2godGFnID0+IHsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmFtZXMucHVzaChzZWxmLnNlcnZpY2VGcm9tVGFnLmNsYXNzTmFtZShzd2csIHRhZykpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZShzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBfLnVwcGVyRmlyc3QoXy5jYW1lbENhc2UodGFnLm5hbWUpKSArICdTZXJ2aWNlJztcbiAgICAgICAgcmV0dXJuIGAke2dyb3VwRm9sZGVyTmFtZX0ke2NsYXNzTmFtZS5yZXBsYWNlKC9cXC8vZywgJycpfWA7XG4gICAgICB9LFxuICAgICAgYWJzb2x1dGVGaWxlUGF0aChzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCwgdGFnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyVGFnKSB7XG5cbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3Zyl9LyR7c2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpfS50c2A7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBlbmRwb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5tYXAoc3dnID0+IHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfTonJHtzd2cuaG9zdH0nYFxuICAgIH0pXG4gIH1cblxuXG5cbiAgc3RhdGljIGdldCBhYnNvbHV0ZVBhdGgoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cblxuICAgIHJldHVybiB7XG4gICAgICBnZXQgb3V0cHV0KCkge1xuICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQ7XG4gICAgICB9LFxuXG4gICAgICBnZXQgUGF0aEZpbGVfaW5kZXhfdHMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L2luZGV4LnRzYDtcbiAgICAgIH0sXG4gICAgICBnZXQgUGF0aEZpbGVfbW9kdWxlX3RzKCkge1xuICAgICAgICBjb25zdCBBUElwYXRoID0gc2VsZi5vdXRwdXQ7XG4gICAgICAgIHJldHVybiBgJHtBUElwYXRofS9tb2R1bGUudHNgO1xuICAgICAgfSxcblxuICAgICAgZ2V0IFBhdGhGb2xkZXJfc2VydmljZXMoKSB7XG4gICAgICAgIGNvbnN0IEFQSXBhdGggPSBzZWxmLm91dHB1dDtcbiAgICAgICAgcmV0dXJuIGAke0FQSXBhdGh9L3NlcnZpY2VzYDtcbiAgICAgIH0sXG5cbiAgICAgIGdldCBQYXRoRmlsZV9zZXJ2aWNlc19pbmRleF90cygpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlbGYuYWJzb2x1dGVQYXRoLlBhdGhGb2xkZXJfc2VydmljZXN9L2luZGV4LnRzYDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGb2xkZXJfc2VydmljZXNfZ3JvdXBOYW1lKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRm9sZGVyTmFtZSA9IHNlbGYuZ3JvdXBGcm9tSlNPTi5mb2xkZXJOYW1lKHN3ZylcblxuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc30vJHtncm91cEZvbGRlck5hbWV9YDtcbiAgICAgIH0sXG5cbiAgICAgIFBhdGhGaWxlX3NlcnZpY2VzX2dyb3VwTmFtZV9pbmRleF90cyhzd2c6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJNb2RlbCkge1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vaW5kZXgudHNgO1xuICAgICAgfSxcblxuICAgICAgUGF0aEZpbGVfc2VydmljZXNfZ3JvdXBOQW1lX3NlcnZpY2VOYW1lX3RzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUZpbGVOYW1lID0gc2VsZi5zZXJ2aWNlRnJvbVRhZy5jbGFzc05hbWUoc3dnLCB0YWcpO1xuICAgICAgICByZXR1cm4gYCR7c2VsZi5hYnNvbHV0ZVBhdGguUGF0aEZvbGRlcl9zZXJ2aWNlc19ncm91cE5hbWUoc3dnKX0vJHtzZXJ2aWNlRmlsZU5hbWV9LnRzYDtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ3JvdXBGcm9tSlNPTigpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGFsbEdyb3VwTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gW11cbiAgICAgICAgc2VsZi5hcGlzLm1hcChzd2cgPT4geyAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5hbWVzLnB1c2goc2VsZi5ncm91cEZyb21KU09OLmZvbGRlck5hbWUoc3dnKSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgICAgfSxcbiAgICAgIGZvbGRlck5hbWUoc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGg6IHN0cmluZyA9IHN3Zy5iYXNlUGF0aDtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHN3Z1tzZWxmLlNZTUJPTC5JTkRFWF9TV0ddO1xuICAgICAgICByZXR1cm4gXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKGJhc2VQYXRoLnRyaW0oKSA9PT0gJycgPyBganNvbiR7aW5kZXh9YCA6IGJhc2VQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZpbmRUYWdzKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsKSB7XG4gICAgY29uc3QgdGFncyA9IFtdXG4gICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoc3dnLnBhdGhzW3BdKS5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBjb25zdCBhID0gc3dnLnBhdGhzW3BdW21dO1xuICAgICAgICBpZiAoXy5pc0FycmF5KGEudGFncykpIHtcbiAgICAgICAgICBhLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICAgICAgICAgICAgaWYgKHRhZ3MuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdGFnKS5sZW5ndGggPT09IDApIHsgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGFncy5wdXNoKHsgbmFtZTogdGFnIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgICByZXR1cm4gdGFncztcbiAgfVxuXG5cblxuXG5cblxuICAvKipcbiAgICogVG8gZ2VuZXJhdGUgZ2V0L2Jvb2tzL3tpZH0gPT4gZ2V0X2Jvb2tzX19pZF9cbiAgICovXG4gIHN0YXRpYyBjbGVhblBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvey9nLCBcIl9cIikucmVwbGFjZSgvfS9nLCBcIl9cIikucmVwbGFjZSgvXFwvL2csIFwiX1wiKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbiAgfVxuXG5cbiAgc3RhdGljIGNsZWFuUGF0aE1vZGVsKHBhdGhNb2RlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGhNb2RlbC5yZXBsYWNlKC9cXC97L2csICcvOicpLnJlcGxhY2UoL30vZywgJycpO1xuICB9XG5cblxuICBzdGF0aWMgc3dhZ2dlclR5cGVUb0pTKHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJpbnRlZ2VyXCIgfCBcImJvb2xlYW5cIiB8IFwiYXJyYXlcIiB8IFwiZmlsZVwiLCBpdGVtc1R5cGU6IGFueSA9ICdhbnknKSB7XG4gICAgcmV0dXJuICh0eXBlID09PSAnaW50ZWdlcicpID8gJ251bWJlcidcbiAgICAgIDogKHR5cGUgPT09ICdhcnJheScpID8gIWl0ZW1zVHlwZSA/ICdhbnknIDogYCR7dGhpcy5zd2FnZ2VyVHlwZVRvSlMoaXRlbXNUeXBlKX1bXWBcbiAgICAgICAgOiAodHlwZSA9PT0gJ2ZpbGUnKSA/ICdhbnknIDogdHlwZTtcbiAgfVxuXG5cblxuICBzdGF0aWMgZ2V0T2JqZWN0RGVmaW5pdGlvbihyZWY6IHN0cmluZywgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwsIGRlZXAgPSAwKTogc3RyaW5nIHtcbiAgICBpZiAoZGVlcCA9PSAxKSByZXR1cm4gJyc7XG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdCYWQganNvbiAkcmVmIGluc2lkZSBzd2FnZ2VyJylcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IHJlcyA9ICcnO1xuICAgIHJlZiA9IHJlZi5yZXBsYWNlKCcjLycsICcnKS5yZXBsYWNlKC9cXC8vZywgJy4nKTtcblxuICAgIGxldCBvYmo6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJEZWYgPSA8TW9kZWxzLlN3YWdnZXIuU3dhZ2dlckRlZj5fLmdldChzd2csIHJlZik7XG5cblxuXG5cblxuXG5cblxuXG4gICAgXy5mb3JPd24ob2JqLnByb3BlcnRpZXMsICh2LCBrKSA9PiB7XG5cbiAgICAgIGlmICh2LiRyZWYgJiYgdHlwZW9mIHYuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LiRyZWYsIHN3ZywgZGVlcCsrKSArIFwifTtcXG5cIjtcbiAgICAgIH0gZWxzZSBpZiAodi5zY2hlbWEgJiYgdi5zY2hlbWEuJHJlZiAmJiB0eXBlb2Ygdi5zY2hlbWEuJHJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXMgKz0gayArIFwiOntcIiArIHRoaXMuZ2V0T2JqZWN0RGVmaW5pdGlvbih2LnNjaGVtYS4kcmVmLCBzd2csIGRlZXArKykgKyBcIn07XFxuXCI7XG5cbiAgICAgIH0gZWxzZSBpZiAodi5pdGVtcyAmJiB2Lml0ZW1zLiRyZWYgJiYgdHlwZW9mIHYuaXRlbXMuJHJlZiA9PT0gXCJzdHJpbmdcIiAmJiB2LnR5cGUgJiYgdi50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9W107XFxuXCI7XG5cblxuICAgICAgfSBlbHNlIGlmICh2Lml0ZW1zICYmIHYuaXRlbXMuJHJlZiAmJiB0eXBlb2Ygdi5pdGVtcy4kcmVmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlcyArPSBrICsgXCI6e1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKHYuaXRlbXMuJHJlZiwgc3dnLCBkZWVwKyspICsgXCJ9O1xcblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzUmVxdWlyZWQgPSAob2JqLnJlcXVpcmVkICYmIG9iai5yZXF1aXJlZCBpbnN0YW5jZW9mIEFycmF5ICYmIG9iai5yZXF1aXJlZC5maWx0ZXIobyA9PiBvID09PSBrKS5sZW5ndGggPiAwKVxuICAgICAgICBsZXQgdHlwZSA9ICh2LmVudW0gJiYgdi5lbnVtIGluc3RhbmNlb2YgQXJyYXkgJiYgdi5lbnVtLmxlbmd0aCA+IDApXG4gICAgICAgICAgPyB2LmVudW0ubWFwKGUgPT4gJ1wiJyArIGUgKyAnXCInKS5qb2luKCd8JykgOiB0aGlzLnN3YWdnZXJUeXBlVG9KUyh2LnR5cGUsIHYuaXRlbXMgPyB2Lml0ZW1zLnR5cGUgOiAnYW55Jyk7XG5cbiAgICAgICAgcmVzICs9IGsgKyAoIWlzUmVxdWlyZWQgPyAnPycgOiBcIlwiKSArIFwiOlwiICsgdHlwZSArIFwiO1xcblwiXG4gICAgICB9XG4gICAgfSk7XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHJpdmF0ZSBwYXRoZXMgPSB7XG4gICAqICAgICAgZ2V0X2FsbF9jb21wYW5pZXM6IG5ldyBTaW1wbGVSZXNvdXJjZTxcbiAgICogICAgICAgICAgc3RyaW5nLCBBLCBUQSwgUlAgZXh0ZW5kcyBPYmplY3QsIFFQIGV4dGVuZHMgUmVzdC5VcmxQYXJhbXM+KGVuZHBvaW50LCBtb2RlbCksXG4gICAqICAgICAgZ2V0X2J5aWRfY29tcGFuaWVzOiBuZXcgU2ltcGxlUmVzb3VyY2U8XG4gICAqICAgICAgICAgIHN0cmluZywgQSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIFJlc3QuVXJsUGFyYW1zPihlbmRwb2ludCwgbW9kZWwpXG4gICAqIH1cbiAgICovXG4gIHN0YXRpYyBnZXRBbmd1bGFyUHJpdmF0ZVBhdGhlc0J5VGFnKHN3ZzogTW9kZWxzLlN3YWdnZXIuU3dhZ2dlck1vZGVsLCB0YWc6IE1vZGVscy5Td2FnZ2VyLlN3YWdnZXJUYWcpOiBzdHJpbmcge1xuICAgIGxldCByZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGJhc2UgPSBzd2cuYmFzZVBhdGgucmVwbGFjZSgnLycsICcnKTtcblxuICAgIGxldCBwYXRoZXM6IE9iamVjdCA9IHt9O1xuICAgIF8uZm9yT3duKHN3Zy5wYXRocywgKHYsIGspID0+IHtcbiAgICAgIF8uZm9yT3duKHYsICh2MiwgazIpID0+IHtcbiAgICAgICAgaWYgKF8uaXNBcnJheSh2Mi50YWdzKSAmJiB2Mi50YWdzLmZpbHRlcihmID0+IGYgPT09IHRhZy5uYW1lKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IHJlc3AgPSB2Mi5yZXNwb25zZXNbJzIwMCddICYmIHYyLnJlc3BvbnNlc1snMjAwJ10uc2NoZW1hO1xuXG5cblxuXG4gICAgICAgICAgaWYgKHBhdGhlc1trXSA9PT0gdm9pZCAwKSBwYXRoZXNba10gPSB7fTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRSZXNwb25zZVR5cGUocmVzcCwgc3dnKTtcblxuICAgICAgICAgIGlmICh0eXBlLmxlbmd0aCA+IDMgJiYgdHlwZS5jaGFyQXQodHlwZS5sZW5ndGggLSAxKSA9PT0gJ10nICYmIHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMikgPT09ICdbJ1xuICAgICAgICAgICAgJiYgIXBhdGhlc1trXVsnYXJyYXknXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydhcnJheSddID0gdHlwZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGsyICE9PSAnZGVsZXRlJyAmJiAhcGF0aGVzW2tdWydzaW5nbGUnXSkge1xuICAgICAgICAgICAgcGF0aGVzW2tdWydzaW5nbGUnXSA9IHR5cGU7XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBsZXQgcGF0aFJlc291cmNlczogTW9kZWxzLlBhdGhSZXNvdXJjZVtdID0gW107XG5cbiAgICBfLmZvck93bihwYXRoZXMsICh2LCBwKSA9PiB7XG5cbiAgICAgIHBhdGhSZXNvdXJjZXMucHVzaCh7XG4gICAgICAgIGNsZWFuX3BhdGg6IHRoaXMuY2xlYW5QYXRoKHApLFxuICAgICAgICBtb2RlbDogdGhpcy5jbGVhblBhdGhNb2RlbChwKSxcbiAgICAgICAgZW5kcG9pbnQ6IHN3Zy5iYXNlUGF0aCxcbiAgICAgICAgc2luZ2xlTW9kZWxUeXBlOiAhdlsnc2luZ2xlJ10gPyAnYW55JyA6IHZbJ3NpbmdsZSddLFxuICAgICAgICBtdWx0aXBsZU1vZGVsVHlwZTogIXZbJ2FycmF5J10gPyAnYW55JyA6IHZbJ2FycmF5J10sXG4gICAgICAgIHF1ZXJ5UGFyYW1zVHlwZTogJ2FueScsXG4gICAgICAgIHBhdGhQYXJhbXNUeXBlOiAnYW55J1xuICAgICAgfSlcbiAgICB9KVxuXG5cbiAgICBwYXRoUmVzb3VyY2VzLmZvckVhY2gocCA9PiB7XG4gICAgICByZXMucHVzaChgJHtwLmNsZWFuX3BhdGh9OiBuZXcgU2ltcGxlUmVzb3VyY2U8XFxuJHtwLnNpbmdsZU1vZGVsVHlwZX0sXFxuJHtwLm11bHRpcGxlTW9kZWxUeXBlfVxcbj4oIE5nMlJlc3RHZW5Nb2R1bGUuZW5wb2ludFVybHMuJHt0aGlzLmdyb3VwRnJvbUpTT04uZm9sZGVyTmFtZShzd2cpfSwgJyR7cC5tb2RlbH0nIClgKTtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGBwcml2YXRlIHBhdGhlcyA9IHsgXFxuJHtyZXMuam9pbignLFxcbicpfVxcbn07YFxuICB9XG5cblxuICAvKlxuICAgc2NoZW1hXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL0NvbXBhbnlEVE9cIlxuICAgICAgfVxuICB9XG5cbiAgXCJzY2hlbWFcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9Db21wYW55RFRPXCJcbiAgfVxuICAgKi9cblxuICBzdGF0aWMgZ2V0UmVzcG9uc2VUeXBlKG86IE1vZGVscy5Td2FnZ2VyLk9ialNjaGVtYSwgc3dnOiBNb2RlbHMuU3dhZ2dlci5Td2FnZ2VyTW9kZWwpIHtcbiAgICBsZXQgcmVzID0gJ3t9IHwgYW55JztcbiAgICBpZiAobyAmJiBvLiRyZWYgJiYgdHlwZW9mIG8uJHJlZiA9PT0gJ3N0cmluZycgJiYgby4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uJHJlZiwgc3dnKSArIFwifVwiO1xuXG4gICAgfSBlbHNlIGlmIChvICYmIG8udHlwZSA9PT0gJ2FycmF5JyAmJiBvLml0ZW1zICYmIG8uaXRlbXMuJHJlZiAmJlxuICAgICAgdHlwZW9mIG8uaXRlbXMuJHJlZiA9PT0gJ3N0cmluZycgJiYgby5pdGVtcy4kcmVmLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJlcyA9IFwie1wiICsgdGhpcy5nZXRPYmplY3REZWZpbml0aW9uKG8uaXRlbXMuJHJlZiwgc3dnKSArIFwifVtdXCI7XG5cbiAgICB9XG5cblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgcHJpdmF0ZSBzdGF0aWMgY291bnQxID0gMDtcblxuICBzdGF0aWMgcmVjcmVhdGVTdW1tYXJ5KHN1bW1hcnk6IHN0cmluZykge1xuXG5cblxuICAgIHJldHVybiBzdW1tYXJ5O1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1uZzItcmVzdC1zd2FnZ2VyLWdlbmVyYXRvciBsaWIvaGVscGVycy50cyJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { CoreHelpers, _ } from 'tnp-core/browser';
2
2
 
3
- class Helpers extends CoreHelpers {
3
+ class HelpersSwagger extends CoreHelpers {
4
4
  static { this.SYMBOL = {
5
5
  INDEX_SWG: Symbol(),
6
6
  OUTPUT_FOLDER: Symbol()
@@ -38,7 +38,6 @@ class Helpers extends CoreHelpers {
38
38
  /* */
39
39
  /* */
40
40
  /* */
41
- /* */
42
41
  static get serviceFromTag() {
43
42
  const self = this;
44
43
  return {
@@ -195,7 +194,7 @@ class Helpers extends CoreHelpers {
195
194
  _.forOwn(v, (v2, k2) => {
196
195
  if (_.isArray(v2.tags) && v2.tags.filter(f => f === tag.name).length > 0) {
197
196
  let resp = v2.responses['200'] && v2.responses['200'].schema;
198
- if (pathes[k] === undefined)
197
+ if (pathes[k] === void 0)
199
198
  pathes[k] = {}; // @ts-ignore
200
199
  let type = this.getResponseType(resp, swg);
201
200
  if (type.length > 3 && type.charAt(type.length - 1) === ']' && type.charAt(type.length - 2) === '['
@@ -393,5 +392,5 @@ class Helpers extends CoreHelpers {
393
392
  * Generated bundle index. Do not edit.
394
393
  */
395
394
 
396
- export { Helpers };
395
+ export { HelpersSwagger };
397
396
  //# sourceMappingURL=ng2-rest-swagger-generator.mjs.map