@c8y/ngx-components 1017.0.74 → 1017.0.76

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.
@@ -116,7 +116,7 @@ export declare class ApplicationOptions {
116
116
  companyName?: string;
117
117
  /** URL template for documentation links (default: `'${docsBaseUrl}${partialUrl}'`). */
118
118
  guideHrefTemplate?: string;
119
- /** Base URL for documentation links. */
119
+ /** Base URL for documentation links (include `{{ version }}` placeholder, if you want versioned links). */
120
120
  docsBaseUrl?: string;
121
121
  /** CSP string to be applied to `index.html` by replacing default values. */
122
122
  contentSecurityPolicy?: string;
@@ -145,10 +145,11 @@ export declare class ApplicationOptions {
145
145
  */
146
146
  copy?: [];
147
147
  /**
148
- * Allows to enable or disable context help.
149
- * By default the context help uses the base URL defined in the "docsBaseUrl" option,
150
- * if this option is not defined the following will be used as the base URL: https://www.cumulocity.com/guides.
151
- * The base URL can also be passed to this option to override the previously mentioned values.
148
+ * Allows to enable or disable context help, or to override the default base URL used to load its contents.
149
+ * By default, the context help uses the same base URL as defined in the `docsBaseUrl` option
150
+ * (if this option is undefined, then the following value will be used: `https://www.cumulocity.com/guides/{{version}}`).
151
+ * Alternatively, if a string is provided here, it'll be used as the base URL
152
+ * and any `{{ version }}` placeholder will be replaced with the relevant docs version.
152
153
  */
153
154
  contextHelp?: boolean | string;
154
155
  /**
@@ -24,9 +24,21 @@ export declare class DocsService implements ExtensionPoint<DocLink> {
24
24
  /**
25
25
  * Default documentation URL.
26
26
  */
27
- readonly DEFAULT_DOCS_BASE_URL = "https://www.cumulocity.com/guides";
27
+ readonly DEFAULT_DOCS_BASE_URL = "https://www.cumulocity.com/guides/{{ version }}";
28
28
  constructor(options: OptionsService, app: AppStateService, rootInjector: Injector, router: Router);
29
- getBaseUrl(): string;
29
+ getBaseUrl(uiVersion?: string | {
30
+ ngx: string;
31
+ }): string;
32
+ /**
33
+ * Takes a URL and replaces all `{{ version }}` placeholders with the relevant docs version
34
+ * (the version is derived from the app state or from the provided parameter).
35
+ * @param url Any URL that contains `{{ version }}` placeholders.
36
+ * @param uiVersion A version string or object, defaults to the app state version.
37
+ * @returns The URL with replaced `{{ version }}` placeholders.
38
+ */
39
+ getUrlWithDocsVersion(url: string, uiVersion?: string | {
40
+ ngx: string;
41
+ }): string;
30
42
  get templateStr(): string;
31
43
  getUserGuideLink(link: any): any;
32
44
  list(): Promise<DocLink[]>;
@@ -44,6 +56,15 @@ export declare class DocsService implements ExtensionPoint<DocLink> {
44
56
  }[];
45
57
  private getLink;
46
58
  private prefixWithSlash;
59
+ /**
60
+ * Returns the most relevant version of documentation for the given version of UI.
61
+ * For maintenance versions, it's the first version in the line, e.g. 1017.0.123 -> 10.17.0.
62
+ * For develop versions, it's the next minor one, e.g. 1017.123.0-SNAPSHOT -> 10.18.0.
63
+ *
64
+ * @param uiVersion The version of UI.
65
+ * @private
66
+ */
67
+ private getDocsVersionForUiVersion;
47
68
  static ɵfac: i0.ɵɵFactoryDeclaration<DocsService, never>;
48
69
  static ɵprov: i0.ɵɵInjectableDeclaration<DocsService>;
49
70
  }
@@ -1,4 +1,3 @@
1
- import { AppStateService } from '../common/ui-state.service';
2
1
  import { DocsService } from '../docs/docs.service';
3
2
  import { HelpService } from './help.service';
4
3
  import * as i0 from "@angular/core";
@@ -13,7 +12,6 @@ import * as i0 from "@angular/core";
13
12
  */
14
13
  export declare class HelpComponent {
15
14
  private docsService;
16
- private appState;
17
15
  helpService: HelpService;
18
16
  /**
19
17
  * The source of the documentation. Used to link to the documentation as well as
@@ -29,17 +27,11 @@ export declare class HelpComponent {
29
27
  */
30
28
  priority: number;
31
29
  /**
32
- * An custom icon. If not set, the navigator icon is resolved
30
+ * A custom icon. If not set, the navigator icon is resolved
33
31
  */
34
32
  icon: any;
35
33
  /**
36
- * Currrent version of the UI which will be used to get the correct data from
37
- * the docs. If the UI version is equal to the latest doc version, the value
38
- * must be ''.
39
- */
40
- version: string;
41
- /**
42
- * An title. Set in open by passing the source.
34
+ * A title. Set in open by passing the source.
43
35
  */
44
36
  title: string;
45
37
  /**
@@ -69,7 +61,7 @@ export declare class HelpComponent {
69
61
  /**
70
62
  * @ignore Only private DI
71
63
  */
72
- constructor(docsService: DocsService, appState: AppStateService, helpService: HelpService);
64
+ constructor(docsService: DocsService, helpService: HelpService);
73
65
  /**
74
66
  * The component is shown by default and therefore breaks e2e test. This is
75
67
  * to prevent the visibility on first navigation.
@@ -96,7 +88,6 @@ export declare class HelpComponent {
96
88
  open(): void;
97
89
  private requestContent;
98
90
  private clean;
99
- private parseVersion;
100
91
  private resolveIcon;
101
92
  private render;
102
93
  static ɵfac: i0.ɵɵFactoryDeclaration<HelpComponent, never>;
@@ -5,4 +5,4 @@
5
5
  */
6
6
  export class ApplicationOptions {
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBbUw5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBoeWJyaWQgYW5kIHVzZXMgQW5ndWxhciBhbmQgQW5ndWxhckpTIHNpbXVsdGFuZW91c2x5LiAqL1xuICB1cGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIGJyYW5kaW5nIGVudHJ5IGZpbGUuIChTZXQgaXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBhbnkgc3R5bGluZy4gWW91IGNhbiBoYW5kbGUgdGhlIHN0eWxpbmcgdGhlbiBvbiB5b3VyIG93biBlLmcuIGluIGFuIGFuZ3VsYXIuanNvbiBmaWxlIHVzaW5nIG5nLWNsaSkgKi9cbiAgYnJhbmRpbmdFbnRyeT86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byBmYXZpY29uLiAqL1xuICBmYXZpY29uVXJsPzogc3RyaW5nO1xuICAvKiogVVJMIHRvICouY3NzIGZpbGUgd2hpY2ggd2lsbCByZXBsYWNlIGRlZmF1bHQgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nVXJsPzogc3RyaW5nO1xuICAvKiogT2JqZWN0IHdpdGggcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIENTUyBjdXN0b20gdmFyaWFibGVzLiAqL1xuICBicmFuZGluZ0Nzc1ZhcnM/OiBCcmFuZGluZ0Nzc1ZhcnM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBvciBvdmVycmlkaW5nIGxhbmd1YWdlcyBhdmFpbGFibGUgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBJdHMga2V5cyBhcmUgbGFuZ3VhZ2UgY29kZXMgYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIC0gYG5hbWVgOiBFbmdsaXNoIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGBuYXRpdmVOYW1lYDogbmF0aXZlIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGB1cmxgOiBmdWxsIFVSTCB0byBKU09OIGZpbGUgd2l0aCBjb21waWxlZCB0cmFuc2xhdGlvbnM7XG4gICAqICAgIGlmIG5vdCBkZWZpbmVkLCB0cmFuc2xhdGlvbnMgd2lsbCBiZSBsb2FkZWQgZnJvbSBgJHtsb2NhbGVQYXRofS8ke2xhbmdDb2RlfS5qc29uYC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBganNvblxuICAgKiBcImxhbmd1YWdlc1wiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIm5hbWVcIjogXCJHZXJtYW5cIixcbiAgICogICAgIFwibmF0aXZlTmFtZVwiOiBcIkRldXRzY2hcIixcbiAgICogICAgIFwidXJsXCI6IFwiL2FwcHMvcHVibGljL3VpLWFzc2V0cy9kZS5qc29uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsYW5ndWFnZXM/OiBMYW5ndWFnZXM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBjdXN0b20gdHJhbnNsYXRpb25zLiBJdCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIChodHRwczovL2N1bXVsb2NpdHkuY29tL2d1aWRlcy91c2Vycy1ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQvI2EtbmFtZS1sYW5ndWFnZXMtYS1hdmFpbGFibGUtbGFuZ3VhZ2VzKVxuICAgKiBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleSBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIEVuZ2xpc2ggYW5kIHRoZSB2YWx1ZSAtIGl0cyB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogLSBgSG9tZWA6IFwiU3RhcnRzZWl0ZVwiXG4gICAqXG4gICAqIEZvciBleGFtcGxlIHlvdSBjYW4gYWRkIHRoZSB0cmFuc2xhdGlvbiBvZiB5b3VyIGN1c3RvbSBjb29raWUgYmFubmVyIGNvbmZpZ3VyZWQgaW4gdGhlIGJyYW5kaW5nIHNldHRpbmdzOlxuICAgKiBgYGBqc29uXG4gICAqIFwiaTE4bkV4dHJhXCI6IHtcbiAgICogICBcImRlXCI6IHtcbiAgICogICAgIFwiQWJvdXQgY29va2llcyBvbiBDdW11bG9jaXR5IElvVFwiOiBcIkluZm9ybWF0aW9uZW4genUgQ29va2llcyBpbiBDdW11bG9jaXR5IElvVFwiLFxuICAgKiAgICAgXCJDbGljayBBZ3JlZSBhbmQgUHJvY2VlZCB0byBhY2NlcHQgY29va2llcyBhbmQgZ28gZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIG9yIGNsaWNrIG9uIFByaXZhY3kgUG9saWN5IHRvIHNlZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIHVzZWQgY29va2llcy5cIjogXCJLbGlja2VuIFNpZSBhdWYgWnVzdGltbWVuIHVuZCBmb3J0ZmFocmVuLCB1bSBDb29raWVzIHp1IGFremVwdGllcmVuIHVuZCBkaXJla3QgenVyIFBsYXR0Zm9ybSB6dSBnZWxhbmdlbiwgb2RlciBrbGlja2VuIFNpZSBhdWYgRGF0ZW5zY2h1dHpyaWNodGxpbmllLCB1bSBkZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nZW4gZGVyIHZlcndlbmRldGVuIENvb2tpZXMgYW56dXplaWdlbi5cIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGkxOG5FeHRyYT86IEkxOG5FeHRyYTtcbiAgLyoqIFBhdGggdG8gdGhlIGZvbGRlciBmcm9tIHdoaWNoICoucG8gZmlsZXMgd2lsbCBiZSBsb2FkZWQuICovXG4gIGxvY2FsZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBcnJheSBvZiBVUkxzIHRvIGFkZGl0aW9uYWwgKi5jc3MgZmlsZXMgdG8gYmUgbG9hZGVkIGF0IHJ1bnRpbWUuICovXG4gIGV4dHJhQ3NzVXJscz86IHN0cmluZ1tdO1xuICAvKiogRG9jdW1lbnRhdGlvbiBsaW5rcyBzZXR0aW5ncy4gKi9cbiAgZG9jcz86IERvY3M7XG4gIC8qKiBBcHBsaWNhdGlvbiBpY29uIHRvIGJlIGRpc3BsYXllZCBpbiBhcHAgc3dpdGNoZXIgYW5kIGhlYWRlciBiYXIuICovXG4gIGljb24/OiBJY29uO1xuXG4gIC8vIFRoZXNlIGFyZSB0aGUgb2xkIG9wdGlvbnNcbiAgLyoqIEhpZGUgYXBwbGljYXRpb24gaW4gYXBwIHN3aXRjaGVyIChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAgbm9BcHBTd2l0Y2hlcj86IGJvb2xlYW47XG4gIC8qKiBIVE1MIHBhZ2UgdGl0bGUuICovXG4gIGdsb2JhbFRpdGxlPzogc3RyaW5nO1xuICAvKiogSGlkZSBcInBvd2VyZWQgYnlcIiBhbmQgdmVyc2lvbiBpbmZvIGF0IHRoZSBib3R0b20gb2YgdGhlIG5hdmlnYXRvciBhbmQgaW4gdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgaGlkZVBvd2VyZWQ/OiBib29sZWFuO1xuICAvKiogSGlkZXMgdGhlIFwiUGxhdGZvcm0gaW5mb3JtYXRpb25cIiBpbiB0aGUgcmlnaHQgZHJhd2VyLCB3aWxsIG92ZXJydWxlIHRoZSBcImhpZGVQb3dlcmVkXCIgb3B0aW9uICovXG4gIGhpZGVQbGF0Zm9ybUluZm9ybWF0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFVSTCB0byBzdXBwb3J0IHBhZ2UgKHNldCB0byBgZmFsc2VgIHRvIGhpZGUgdGhlIGxpbmspLiAqL1xuICBzdXBwb3J0VXJsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcGxhY2VtZW50IHN0cmluZyBmb3IgYHVzZXJgIGZpZWxkIGluIGF1ZGl0IGxvZ3MgZm9yIGFjdGlvbnMgcGVyZm9ybWVkIGJ5IGEgc3VwcG9ydCB1c2VyXG4gICAqIChhdmFpbGFibGUgcGxhY2Vob2xkZXJzOiBge3tzdXBwb3J0X3VzZXJ9fWAsIGB7e3N1cHBvcnRlZF91c2VyfX1gKS5cbiAgICovXG4gIHN1cHBvcnRVc2VyU3RyaW5nPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlzYWJsZXMgcmVhbHRpbWUgdXBkYXRlcyBvbiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UmVhbHRpbWVEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRqdXN0IHRoZSBkZWZhdWx0IHBhZ2VzaXplIG9mIDEwMCBpdGVtcyBvZiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UGFnZVNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaGlkZSB0aGUgaGludCB0aGF0IHRoZXJlIGFyZSBtb3JlIGRldmljZXMgd2l0aCBnZW8gY29vcmRpbmF0ZXMgdGhlbiBkaXNwbGF5ZWQgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldEhpZGVNYXhEZXZpY2VPbk1hcEhpbnQ/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgcmlnaHREcmF3ZXI/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgYnJlYWRjcnVtYnMgaW4gdGhlIGhlYWRlciBmb3IgZ3JvdXBzIGFuZCBkZXZpY2VzIChkZWZhdWx0OiBmYWxzZSkuICovXG4gIGJyZWFkY3J1bWJzPzogYm9vbGVhbjtcbiAgLyoqIENvbGxhcHNlIG5hdmlnYXRvciBvbiBpbml0aWFsIGxvYWQuICovXG4gIGhpZGVOYXZpZ2F0b3I/OiBib29sZWFuO1xuICAvKiogU2hvdyB0YWJzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiAqL1xuICB0YWJzSG9yaXpvbnRhbD86IGJvb2xlYW47XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmsgdG8gZGlzcGxheSBvbiBsb2dpbiBzY3JlZW4uICovXG4gIGxvZ2luRXh0cmFMaW5rPzogTG9naW5FeHRyYUxpbms7XG4gIC8qKiBFbmFibGUgb3IgZGlzYWJsZSBzdG9yYWdlIGxpbWl0YXRpb24gZmVhdHVyZS4gKi9cbiAgc3RvcmFnZUxpbWl0YXRpb25GZWF0dXJlRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBOYW1lIG9mIGNvbXBhbnkgaGFuZGxpbmcgc3VwcG9ydCByZXF1ZXN0cyBmcm9tIGFwcCB1c2VycyAoZGlzcGxheWVkIGluIG5vdGlmaWNhdGlvbiBtZXNzYWdlKS4gKi9cbiAgY29tcGFueU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdGVtcGxhdGUgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGRlZmF1bHQ6IGAnJHtkb2NzQmFzZVVybH0ke3BhcnRpYWxVcmx9J2ApLiAqL1xuICBndWlkZUhyZWZUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqIEJhc2UgVVJMIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzLiAqL1xuICBkb2NzQmFzZVVybD86IHN0cmluZztcbiAgLyoqIENTUCBzdHJpbmcgdG8gYmUgYXBwbGllZCB0byBgaW5kZXguaHRtbGAgYnkgcmVwbGFjaW5nIGRlZmF1bHQgdmFsdWVzLiAqL1xuICBjb250ZW50U2VjdXJpdHlQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGVzIGNsb3VkIHNlbnNvciB3aXphcmQgKi9cbiAgc2Vuc29yUGhvbmU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIGEgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY2hlY2tib3ggaW4gZWRpdCB1c2VyIG1vZGFsLiAqL1xuICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpciAodXNlZnVsIHdoZW4gd29ya2luZyBpbiBtb25vcmVwbyBzZXR1cCwgZS5nLiB5YXJuIHdvcmtzcGFjZXMpLiAqL1xuICByb290Tm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29va2llIEJhbm5lciBjb25maWd1cmF0aW9uICovXG4gIGNvb2tpZUJhbm5lcj86IENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBDb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi4gSGVyZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGNvb2tpZSBjYXRlZ29yaWVzICovXG4gIGNvb2tpZVByZWZlcmVuY2VzPzogQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uO1xuICAvKiogQSBrZXkgZm9yIHRoZSBwcm9kdWN0IGV4cGVyaWVuY2Ugc29mdHdhcmUgR2FpbnNpZ2h0LiAqL1xuICBnYWluc2lnaHRLZXk/OiBzdHJpbmc7XG4gIC8qKiBOZ01vZHVsZSBleHBvcnQgZm9yIHBsdWdpbnMuICovXG4gIGV4cG9ydHM/OiBQbHVnaW5zRXhwb3J0c1tdO1xuICAvKiogTGlzdCBvZiBpbXBvcnRlZCByZW1vdGUgcGx1Z2lucy4gKi9cbiAgcmVtb3Rlcz86IFJlbW90ZVBsdWdpbnM7XG4gIC8qKiBUaGUgcGFja2FnZSBzb3VyY2UgYSBhcHBsaWNhdGlvbiBvcmlnaW5zIGZyb20gYXMgSUFwcGxpY2F0aW9uIG9yIHNpbXBseSB0aGUgaWQgb2YgdGhlIHNvdXJjZSAqL1xuICBzb3VyY2U/OiBzdHJpbmcgfCBudW1iZXIgfCBJQXBwbGljYXRpb247XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGFzc2V0cyB0byBjb3B5IHRvIHRoZSBidWlsZCBvdXRwdXQuXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL2NvcHktd2VicGFjay1wbHVnaW4gZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogYWJvdXQgdGhlIHBhdHRlcm5zIHRvIGFkZCBoZXJlLlxuICAgKi9cbiAgY29weT86IFtdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGVuYWJsZSBvciBkaXNhYmxlIGNvbnRleHQgaGVscC5cbiAgICogQnkgZGVmYXVsdCB0aGUgY29udGV4dCBoZWxwIHVzZXMgdGhlIGJhc2UgVVJMIGRlZmluZWQgaW4gdGhlIFwiZG9jc0Jhc2VVcmxcIiBvcHRpb24sXG4gICAqIGlmIHRoaXMgb3B0aW9uIGlzIG5vdCBkZWZpbmVkIHRoZSBmb2xsb3dpbmcgd2lsbCBiZSB1c2VkIGFzIHRoZSBiYXNlIFVSTDogaHR0cHM6Ly93d3cuY3VtdWxvY2l0eS5jb20vZ3VpZGVzLlxuICAgKiBUaGUgYmFzZSBVUkwgY2FuIGFsc28gYmUgcGFzc2VkIHRvIHRoaXMgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSBwcmV2aW91c2x5IG1lbnRpb25lZCB2YWx1ZXMuXG4gICAqL1xuICBjb250ZXh0SGVscD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBjb2NrcGl0IGFuZCBkZXZpY2VtYW5hZ2VtZW50IHVzZSB0aGUgb25seVJvb3RzIHF1ZXJ5IHRvIHJlc29sdmUgcm9vdCBub2Rlcy4gVGhpc1xuICAgKiBjb3VsZCBsZWFkIHRvIHBlcmZvcm1hbmNlIGlzc3VlcywgaWYgYSBjdXN0b21lciBoYXMgYSBsb3Qgb2Ygcm9vdCBub2Rlcy4gVGhlcmVmb3JlIHlvdSBjYW4gZGlzYWJsZVxuICAgKiB0aGUgdXNlIG9mIHRoaXMgcXVlcnkgd2l0aCB0aGlzIGZsYWcuXG4gICAqL1xuICBkaXNhYmxlT25seVJvb3RzUXVlcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGZvcmNlIHNob3dpbmcgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGZvcmNlU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzaG93IHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBpc1NldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgYSBXZWJTREsgYXBwIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi5cbiAgICogSW4gY2FzZSB5b3Ugd291bGQgbGlrZSB0byBkZXZlbG9wIGp1c3QgYSBzdGF0aWMgYXBwbGljYXRpb24sIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbnkga2luZCBvZiBhY2Nlc3MgdG8gdGhlIGJhY2tlbmQsXG4gICAqIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBkaXNhYmxlIHRoZSBsb2dpbiBzY3JlZW4uXG4gICAqIE5PVEU6IG5vdCBhbGwgV2ViU0RLIGNvbXBvbmVudHMgc3VwcG9ydCB0aGlzLCBzb21lIG1pZ2h0IHJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluIGFuZCB3b24ndCB3b3JrLlxuICAgKi9cbiAgbm9Mb2dpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiBzdXBwb3J0aW5nL2xvYWRpbmcgcGx1Z2lucyBmb3IgdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIG5vUGx1Z2lucz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlUGx1Z2lucyB7XG4gIC8qKlxuICAgKiBBIGtleSB2YWx1ZSBwYWlyLCB3aGlsZSB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgbW9kdWxlcyB0byBsb2FkIGFuZCB0aGVcbiAgICoga2V5IGlzIHRoZSBjb250ZXh0IHBhdGguXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGpzXG4gICAqIHtcbiAgICogICAgJ2NvY2twaXQnOiBbJ0hvbWVEYXNoYm9hcmRNb2R1bGUnLCAnRGF0YUV4cGxvcmVyRGFzaGJvYXJkJ10sXG4gICAqICAgICd3aWRnZXQtcGFja2FnZUAxLjAuMCc6IFsnRXh0ZW5kZWRNYXBXaWRnZXQnXVxuICAgKiB9XG4gICAqIGBgXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5zRXhwb3J0cyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQW5ndWxhciBtb2R1bGUgY2xhc3MuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBwYXRoIHRvIHRoZSBtb2R1bGUgdHlwZXNjcmlwdCBmaWxlLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogQW4gc2hvcnQgZGVzY3JpcHRpb24gYWJvdXQgd2hhdCB0aGUgbW9kdWxlIGRvZXMuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzY29wZSB0aGUgcGx1Z2luIHRvIGNlcnRhaW4gYXBwbGljYXRpb25zLiBFLmcuIGlmIHlvdVxuICAgKiBhZGQgaGVyZSAnY29ja3BpdCcsIHRoZSBwbHVnaW4gY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGludG8gYW5cbiAgICogYXBwbGljYXRpb24gb24gdGhlIGNvbnRleHRQYXRoIGBhcHBzL2NvY2twaXRgLiBZb3UgY2FuIHVzZSBjb21tYVxuICAgKiBzZXBhcmF0ZWQgdmFsdWVzLCBhc3RlcmlzayAoZGVmYXVsdCkgdG8gYWxsb3cgYWxsIGFwcGxpY2F0aW9ucyBvclxuICAgKiBgc2VsZmAgdG8gbGltaXQgdGhlIHBsdWdpbiB0byB0aGUgY3VycmVudCBzb2x1dGlvbi5cbiAgICovXG4gIHNjb3BlPzogJyonIHwgJ3NlbGYnIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb24ge1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgdGl0bGUgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUaXRsZT86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIFRleHQgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUZXh0Pzogc3RyaW5nO1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgcG9saWN5VXJsIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgcG9saWN5VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGxvZ2dpbmcgaW4gICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiB0cmFja2luZyBjb29raWVzICAqL1xuICBmdW5jdGlvbmFsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiBjb29raWVzIHJlbGF0ZWQgdG8gYWR2ZXJ0aXNpbmcgICovXG4gIG1hcmtldGluZz86IGJvb2xlYW4gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5FeHRyYUxpbmsge1xuICB1cmw6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY29uIHtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzIHtcbiAgLyoqIEhpZGUgZGVmYXVsdCBsaW5rcyB0byBkb2N1bWVudGF0aW9uLiAqL1xuICBub0RlZmF1bHQ6IGJvb2xlYW47XG4gIC8qKiBMaXN0IG9mIHJlZ2V4IHN0cmluZ3MuIE1hdGNoaW5nIGRlZmF1bHQgZG9jcyBVUkxzIHdpbGwgYmUgaGlkZGVuLiAqL1xuICBleGNsdWRlRGVmYXVsdDogc3RyaW5nW107XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmtzIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgbGlua3M6IExpbmtzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua3Mge1xuICAvKiogSWNvbiBjbGFzc2VzIHdpdGggYGM4eS1pY29uYCwgZS5nLiBgYzh5LWljb24gYzh5LWljb24tYWRkLXVzZXJgIG9yIGBjOHktaWNvbiBjOHktaWNvbi1kZXZpY2UtY29ubmVjdGAuICovXG4gIGljb246IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHR5cGU6ICdkb2MnIHwgJ3F1aWNrbGluayc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBJMThuRXh0cmFMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuRXh0cmFMYW5nQ29kZSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXMge1xuICBbbGFuZ0NvZGU6IHN0cmluZ106IExhbmd1YWdlc0xhbmdDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlc0xhbmdDb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kaW5nQ3NzVmFycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBb0w5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBoeWJyaWQgYW5kIHVzZXMgQW5ndWxhciBhbmQgQW5ndWxhckpTIHNpbXVsdGFuZW91c2x5LiAqL1xuICB1cGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIGJyYW5kaW5nIGVudHJ5IGZpbGUuIChTZXQgaXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBhbnkgc3R5bGluZy4gWW91IGNhbiBoYW5kbGUgdGhlIHN0eWxpbmcgdGhlbiBvbiB5b3VyIG93biBlLmcuIGluIGFuIGFuZ3VsYXIuanNvbiBmaWxlIHVzaW5nIG5nLWNsaSkgKi9cbiAgYnJhbmRpbmdFbnRyeT86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byBmYXZpY29uLiAqL1xuICBmYXZpY29uVXJsPzogc3RyaW5nO1xuICAvKiogVVJMIHRvICouY3NzIGZpbGUgd2hpY2ggd2lsbCByZXBsYWNlIGRlZmF1bHQgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nVXJsPzogc3RyaW5nO1xuICAvKiogT2JqZWN0IHdpdGggcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIENTUyBjdXN0b20gdmFyaWFibGVzLiAqL1xuICBicmFuZGluZ0Nzc1ZhcnM/OiBCcmFuZGluZ0Nzc1ZhcnM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBvciBvdmVycmlkaW5nIGxhbmd1YWdlcyBhdmFpbGFibGUgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBJdHMga2V5cyBhcmUgbGFuZ3VhZ2UgY29kZXMgYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIC0gYG5hbWVgOiBFbmdsaXNoIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGBuYXRpdmVOYW1lYDogbmF0aXZlIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGB1cmxgOiBmdWxsIFVSTCB0byBKU09OIGZpbGUgd2l0aCBjb21waWxlZCB0cmFuc2xhdGlvbnM7XG4gICAqICAgIGlmIG5vdCBkZWZpbmVkLCB0cmFuc2xhdGlvbnMgd2lsbCBiZSBsb2FkZWQgZnJvbSBgJHtsb2NhbGVQYXRofS8ke2xhbmdDb2RlfS5qc29uYC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBganNvblxuICAgKiBcImxhbmd1YWdlc1wiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIm5hbWVcIjogXCJHZXJtYW5cIixcbiAgICogICAgIFwibmF0aXZlTmFtZVwiOiBcIkRldXRzY2hcIixcbiAgICogICAgIFwidXJsXCI6IFwiL2FwcHMvcHVibGljL3VpLWFzc2V0cy9kZS5qc29uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsYW5ndWFnZXM/OiBMYW5ndWFnZXM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBjdXN0b20gdHJhbnNsYXRpb25zLiBJdCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIChodHRwczovL2N1bXVsb2NpdHkuY29tL2d1aWRlcy91c2Vycy1ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQvI2EtbmFtZS1sYW5ndWFnZXMtYS1hdmFpbGFibGUtbGFuZ3VhZ2VzKVxuICAgKiBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleSBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIEVuZ2xpc2ggYW5kIHRoZSB2YWx1ZSAtIGl0cyB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogLSBgSG9tZWA6IFwiU3RhcnRzZWl0ZVwiXG4gICAqXG4gICAqIEZvciBleGFtcGxlIHlvdSBjYW4gYWRkIHRoZSB0cmFuc2xhdGlvbiBvZiB5b3VyIGN1c3RvbSBjb29raWUgYmFubmVyIGNvbmZpZ3VyZWQgaW4gdGhlIGJyYW5kaW5nIHNldHRpbmdzOlxuICAgKiBgYGBqc29uXG4gICAqIFwiaTE4bkV4dHJhXCI6IHtcbiAgICogICBcImRlXCI6IHtcbiAgICogICAgIFwiQWJvdXQgY29va2llcyBvbiBDdW11bG9jaXR5IElvVFwiOiBcIkluZm9ybWF0aW9uZW4genUgQ29va2llcyBpbiBDdW11bG9jaXR5IElvVFwiLFxuICAgKiAgICAgXCJDbGljayBBZ3JlZSBhbmQgUHJvY2VlZCB0byBhY2NlcHQgY29va2llcyBhbmQgZ28gZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIG9yIGNsaWNrIG9uIFByaXZhY3kgUG9saWN5IHRvIHNlZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIHVzZWQgY29va2llcy5cIjogXCJLbGlja2VuIFNpZSBhdWYgWnVzdGltbWVuIHVuZCBmb3J0ZmFocmVuLCB1bSBDb29raWVzIHp1IGFremVwdGllcmVuIHVuZCBkaXJla3QgenVyIFBsYXR0Zm9ybSB6dSBnZWxhbmdlbiwgb2RlciBrbGlja2VuIFNpZSBhdWYgRGF0ZW5zY2h1dHpyaWNodGxpbmllLCB1bSBkZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nZW4gZGVyIHZlcndlbmRldGVuIENvb2tpZXMgYW56dXplaWdlbi5cIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGkxOG5FeHRyYT86IEkxOG5FeHRyYTtcbiAgLyoqIFBhdGggdG8gdGhlIGZvbGRlciBmcm9tIHdoaWNoICoucG8gZmlsZXMgd2lsbCBiZSBsb2FkZWQuICovXG4gIGxvY2FsZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBcnJheSBvZiBVUkxzIHRvIGFkZGl0aW9uYWwgKi5jc3MgZmlsZXMgdG8gYmUgbG9hZGVkIGF0IHJ1bnRpbWUuICovXG4gIGV4dHJhQ3NzVXJscz86IHN0cmluZ1tdO1xuICAvKiogRG9jdW1lbnRhdGlvbiBsaW5rcyBzZXR0aW5ncy4gKi9cbiAgZG9jcz86IERvY3M7XG4gIC8qKiBBcHBsaWNhdGlvbiBpY29uIHRvIGJlIGRpc3BsYXllZCBpbiBhcHAgc3dpdGNoZXIgYW5kIGhlYWRlciBiYXIuICovXG4gIGljb24/OiBJY29uO1xuXG4gIC8vIFRoZXNlIGFyZSB0aGUgb2xkIG9wdGlvbnNcbiAgLyoqIEhpZGUgYXBwbGljYXRpb24gaW4gYXBwIHN3aXRjaGVyIChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAgbm9BcHBTd2l0Y2hlcj86IGJvb2xlYW47XG4gIC8qKiBIVE1MIHBhZ2UgdGl0bGUuICovXG4gIGdsb2JhbFRpdGxlPzogc3RyaW5nO1xuICAvKiogSGlkZSBcInBvd2VyZWQgYnlcIiBhbmQgdmVyc2lvbiBpbmZvIGF0IHRoZSBib3R0b20gb2YgdGhlIG5hdmlnYXRvciBhbmQgaW4gdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgaGlkZVBvd2VyZWQ/OiBib29sZWFuO1xuICAvKiogSGlkZXMgdGhlIFwiUGxhdGZvcm0gaW5mb3JtYXRpb25cIiBpbiB0aGUgcmlnaHQgZHJhd2VyLCB3aWxsIG92ZXJydWxlIHRoZSBcImhpZGVQb3dlcmVkXCIgb3B0aW9uICovXG4gIGhpZGVQbGF0Zm9ybUluZm9ybWF0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFVSTCB0byBzdXBwb3J0IHBhZ2UgKHNldCB0byBgZmFsc2VgIHRvIGhpZGUgdGhlIGxpbmspLiAqL1xuICBzdXBwb3J0VXJsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcGxhY2VtZW50IHN0cmluZyBmb3IgYHVzZXJgIGZpZWxkIGluIGF1ZGl0IGxvZ3MgZm9yIGFjdGlvbnMgcGVyZm9ybWVkIGJ5IGEgc3VwcG9ydCB1c2VyXG4gICAqIChhdmFpbGFibGUgcGxhY2Vob2xkZXJzOiBge3tzdXBwb3J0X3VzZXJ9fWAsIGB7e3N1cHBvcnRlZF91c2VyfX1gKS5cbiAgICovXG4gIHN1cHBvcnRVc2VyU3RyaW5nPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlzYWJsZXMgcmVhbHRpbWUgdXBkYXRlcyBvbiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UmVhbHRpbWVEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRqdXN0IHRoZSBkZWZhdWx0IHBhZ2VzaXplIG9mIDEwMCBpdGVtcyBvZiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UGFnZVNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaGlkZSB0aGUgaGludCB0aGF0IHRoZXJlIGFyZSBtb3JlIGRldmljZXMgd2l0aCBnZW8gY29vcmRpbmF0ZXMgdGhlbiBkaXNwbGF5ZWQgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldEhpZGVNYXhEZXZpY2VPbk1hcEhpbnQ/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgcmlnaHREcmF3ZXI/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgYnJlYWRjcnVtYnMgaW4gdGhlIGhlYWRlciBmb3IgZ3JvdXBzIGFuZCBkZXZpY2VzIChkZWZhdWx0OiBmYWxzZSkuICovXG4gIGJyZWFkY3J1bWJzPzogYm9vbGVhbjtcbiAgLyoqIENvbGxhcHNlIG5hdmlnYXRvciBvbiBpbml0aWFsIGxvYWQuICovXG4gIGhpZGVOYXZpZ2F0b3I/OiBib29sZWFuO1xuICAvKiogU2hvdyB0YWJzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiAqL1xuICB0YWJzSG9yaXpvbnRhbD86IGJvb2xlYW47XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmsgdG8gZGlzcGxheSBvbiBsb2dpbiBzY3JlZW4uICovXG4gIGxvZ2luRXh0cmFMaW5rPzogTG9naW5FeHRyYUxpbms7XG4gIC8qKiBFbmFibGUgb3IgZGlzYWJsZSBzdG9yYWdlIGxpbWl0YXRpb24gZmVhdHVyZS4gKi9cbiAgc3RvcmFnZUxpbWl0YXRpb25GZWF0dXJlRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBOYW1lIG9mIGNvbXBhbnkgaGFuZGxpbmcgc3VwcG9ydCByZXF1ZXN0cyBmcm9tIGFwcCB1c2VycyAoZGlzcGxheWVkIGluIG5vdGlmaWNhdGlvbiBtZXNzYWdlKS4gKi9cbiAgY29tcGFueU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdGVtcGxhdGUgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGRlZmF1bHQ6IGAnJHtkb2NzQmFzZVVybH0ke3BhcnRpYWxVcmx9J2ApLiAqL1xuICBndWlkZUhyZWZUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqIEJhc2UgVVJMIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzIChpbmNsdWRlIGB7eyB2ZXJzaW9uIH19YCBwbGFjZWhvbGRlciwgaWYgeW91IHdhbnQgdmVyc2lvbmVkIGxpbmtzKS4gKi9cbiAgZG9jc0Jhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKiBDU1Agc3RyaW5nIHRvIGJlIGFwcGxpZWQgdG8gYGluZGV4Lmh0bWxgIGJ5IHJlcGxhY2luZyBkZWZhdWx0IHZhbHVlcy4gKi9cbiAgY29udGVudFNlY3VyaXR5UG9saWN5Pzogc3RyaW5nO1xuICAvKiogRW5hYmxlcyBjbG91ZCBzZW5zb3Igd2l6YXJkICovXG4gIHNlbnNvclBob25lPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgb3IgaGlkZSBhIG5ld3NsZXR0ZXIgc3Vic2NyaXB0aW9uIGNoZWNrYm94IGluIGVkaXQgdXNlciBtb2RhbC4gKi9cbiAgbmV3c2xldHRlcj86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSByb290IG5vZGVfbW9kdWxlcyBkaXIgKHVzZWZ1bCB3aGVuIHdvcmtpbmcgaW4gbW9ub3JlcG8gc2V0dXAsIGUuZy4geWFybiB3b3Jrc3BhY2VzKS4gKi9cbiAgcm9vdE5vZGVNb2R1bGVzUGF0aD86IHN0cmluZztcbiAgLyoqIENvb2tpZSBCYW5uZXIgY29uZmlndXJhdGlvbiAqL1xuICBjb29raWVCYW5uZXI/OiBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uO1xuICAvKiogQ29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24uIEhlcmUgeW91IGNhbiBlbmFibGUgb3IgZGlzYWJsZSBjb29raWUgY2F0ZWdvcmllcyAqL1xuICBjb29raWVQcmVmZXJlbmNlcz86IENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbjtcbiAgLyoqIEEga2V5IGZvciB0aGUgcHJvZHVjdCBleHBlcmllbmNlIHNvZnR3YXJlIEdhaW5zaWdodC4gKi9cbiAgZ2FpbnNpZ2h0S2V5Pzogc3RyaW5nO1xuICAvKiogTmdNb2R1bGUgZXhwb3J0IGZvciBwbHVnaW5zLiAqL1xuICBleHBvcnRzPzogUGx1Z2luc0V4cG9ydHNbXTtcbiAgLyoqIExpc3Qgb2YgaW1wb3J0ZWQgcmVtb3RlIHBsdWdpbnMuICovXG4gIHJlbW90ZXM/OiBSZW1vdGVQbHVnaW5zO1xuICAvKiogVGhlIHBhY2thZ2Ugc291cmNlIGEgYXBwbGljYXRpb24gb3JpZ2lucyBmcm9tIGFzIElBcHBsaWNhdGlvbiBvciBzaW1wbHkgdGhlIGlkIG9mIHRoZSBzb3VyY2UgKi9cbiAgc291cmNlPzogc3RyaW5nIHwgbnVtYmVyIHwgSUFwcGxpY2F0aW9uO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBhc3NldHMgdG8gY29weSB0byB0aGUgYnVpbGQgb3V0cHV0LlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9jb3B5LXdlYnBhY2stcGx1Z2luIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IHRoZSBwYXR0ZXJucyB0byBhZGQgaGVyZS5cbiAgICovXG4gIGNvcHk/OiBbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBlbmFibGUgb3IgZGlzYWJsZSBjb250ZXh0IGhlbHAsIG9yIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJhc2UgVVJMIHVzZWQgdG8gbG9hZCBpdHMgY29udGVudHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZXh0IGhlbHAgdXNlcyB0aGUgc2FtZSBiYXNlIFVSTCBhcyBkZWZpbmVkIGluIHRoZSBgZG9jc0Jhc2VVcmxgIG9wdGlvblxuICAgKiAoaWYgdGhpcyBvcHRpb24gaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmb2xsb3dpbmcgdmFsdWUgd2lsbCBiZSB1c2VkOiBgaHR0cHM6Ly93d3cuY3VtdWxvY2l0eS5jb20vZ3VpZGVzL3t7dmVyc2lvbn19YCkuXG4gICAqIEFsdGVybmF0aXZlbHksIGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkIGhlcmUsIGl0J2xsIGJlIHVzZWQgYXMgdGhlIGJhc2UgVVJMXG4gICAqIGFuZCBhbnkgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcmVsZXZhbnQgZG9jcyB2ZXJzaW9uLlxuICAgKi9cbiAgY29udGV4dEhlbHA/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgY29ja3BpdCBhbmQgZGV2aWNlbWFuYWdlbWVudCB1c2UgdGhlIG9ubHlSb290cyBxdWVyeSB0byByZXNvbHZlIHJvb3Qgbm9kZXMuIFRoaXNcbiAgICogY291bGQgbGVhZCB0byBwZXJmb3JtYW5jZSBpc3N1ZXMsIGlmIGEgY3VzdG9tZXIgaGFzIGEgbG90IG9mIHJvb3Qgbm9kZXMuIFRoZXJlZm9yZSB5b3UgY2FuIGRpc2FibGVcbiAgICogdGhlIHVzZSBvZiB0aGlzIHF1ZXJ5IHdpdGggdGhpcyBmbGFnLlxuICAgKi9cbiAgZGlzYWJsZU9ubHlSb290c1F1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBmb3JjZSBzaG93aW5nIHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBmb3JjZVNldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gc2hvdyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgaXNTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IGEgV2ViU0RLIGFwcCByZXF1aXJlcyB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4uXG4gICAqIEluIGNhc2UgeW91IHdvdWxkIGxpa2UgdG8gZGV2ZWxvcCBqdXN0IGEgc3RhdGljIGFwcGxpY2F0aW9uLCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRoZSBiYWNrZW5kLFxuICAgKiB5b3UgY2FuIHVzZSB0aGlzIGZsYWcgdG8gZGlzYWJsZSB0aGUgbG9naW4gc2NyZWVuLlxuICAgKiBOT1RFOiBub3QgYWxsIFdlYlNESyBjb21wb25lbnRzIHN1cHBvcnQgdGhpcywgc29tZSBtaWdodCByZXF1aXJlIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbiBhbmQgd29uJ3Qgd29yay5cbiAgICovXG4gIG5vTG9naW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2Ygc3VwcG9ydGluZy9sb2FkaW5nIHBsdWdpbnMgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gICAqL1xuICBub1BsdWdpbnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZVBsdWdpbnMge1xuICAvKipcbiAgICogQSBrZXkgdmFsdWUgcGFpciwgd2hpbGUgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIG1vZHVsZXMgdG8gbG9hZCBhbmQgdGhlXG4gICAqIGtleSBpcyB0aGUgY29udGV4dCBwYXRoLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB7XG4gICAqICAgICdjb2NrcGl0JzogWydIb21lRGFzaGJvYXJkTW9kdWxlJywgJ0RhdGFFeHBsb3JlckRhc2hib2FyZCddLFxuICAgKiAgICAnd2lkZ2V0LXBhY2thZ2VAMS4wLjAnOiBbJ0V4dGVuZGVkTWFwV2lkZ2V0J11cbiAgICogfVxuICAgKiBgYFxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luc0V4cG9ydHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFuZ3VsYXIgbW9kdWxlIGNsYXNzLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgcGF0aCB0byB0aGUgbW9kdWxlIHR5cGVzY3JpcHQgZmlsZS5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHdoYXQgdGhlIG1vZHVsZSBkb2VzLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2NvcGUgdGhlIHBsdWdpbiB0byBjZXJ0YWluIGFwcGxpY2F0aW9ucy4gRS5nLiBpZiB5b3VcbiAgICogYWRkIGhlcmUgJ2NvY2twaXQnLCB0aGUgcGx1Z2luIGNhbiBvbmx5IGJlIGluc3RhbGxlZCBpbnRvIGFuXG4gICAqIGFwcGxpY2F0aW9uIG9uIHRoZSBjb250ZXh0UGF0aCBgYXBwcy9jb2NrcGl0YC4gWW91IGNhbiB1c2UgY29tbWFcbiAgICogc2VwYXJhdGVkIHZhbHVlcywgYXN0ZXJpc2sgKGRlZmF1bHQpIHRvIGFsbG93IGFsbCBhcHBsaWNhdGlvbnMgb3JcbiAgICogYHNlbGZgIHRvIGxpbWl0IHRoZSBwbHVnaW4gdG8gdGhlIGN1cnJlbnQgc29sdXRpb24uXG4gICAqL1xuICBzY29wZT86ICcqJyB8ICdzZWxmJyB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHRpdGxlIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSBUZXh0IG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGV4dD86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHBvbGljeVVybCBvZiBDb29raWUgQmFubmVyICovXG4gIHBvbGljeVVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb24ge1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIGNvb2tpZXMgcmVsYXRlZCB0byBsb2dnaW5nIGluICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gdHJhY2tpbmcgY29va2llcyAgKi9cbiAgZnVuY3Rpb25hbD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGFkdmVydGlzaW5nICAqL1xuICBtYXJrZXRpbmc/OiBib29sZWFuIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luRXh0cmFMaW5rIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XG4gIGNsYXNzPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jcyB7XG4gIC8qKiBIaWRlIGRlZmF1bHQgbGlua3MgdG8gZG9jdW1lbnRhdGlvbi4gKi9cbiAgbm9EZWZhdWx0OiBib29sZWFuO1xuICAvKiogTGlzdCBvZiByZWdleCBzdHJpbmdzLiBNYXRjaGluZyBkZWZhdWx0IGRvY3MgVVJMcyB3aWxsIGJlIGhpZGRlbi4gKi9cbiAgZXhjbHVkZURlZmF1bHQ6IHN0cmluZ1tdO1xuICAvKiogQWRkaXRpb25hbCBsaW5rcyB0byBiZSBkaXNwbGF5ZWQuICovXG4gIGxpbmtzOiBMaW5rc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtzIHtcbiAgLyoqIEljb24gY2xhc3NlcyB3aXRoIGBjOHktaWNvbmAsIGUuZy4gYGM4eS1pY29uIGM4eS1pY29uLWFkZC11c2VyYCBvciBgYzh5LWljb24gYzh5LWljb24tZGV2aWNlLWNvbm5lY3RgLiAqL1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICB0eXBlOiAnZG9jJyB8ICdxdWlja2xpbmsnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5FeHRyYSB7XG4gIFtsYW5nQ29kZTogc3RyaW5nXTogSTE4bkV4dHJhTGFuZ0NvZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhTGFuZ0NvZGUge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VzIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBMYW5ndWFnZXNMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXNMYW5nQ29kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbmF0aXZlTmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuZGluZ0Nzc1ZhcnMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG4iXX0=
@@ -8,7 +8,7 @@ import { fromTriggerOnce, getInjectedHooks } from '../common/extension-hooks';
8
8
  import { Subject } from 'rxjs';
9
9
  import { Router } from '@angular/router';
10
10
  import { shareReplay, first, filter, distinctUntilChanged } from 'rxjs/operators';
11
- import { isUndefined } from 'lodash-es';
11
+ import { isUndefined, get } from 'lodash-es';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "../common/options.service";
14
14
  import * as i2 from "../common/ui-state.service";
@@ -31,12 +31,28 @@ export class DocsService {
31
31
  /**
32
32
  * Default documentation URL.
33
33
  */
34
- this.DEFAULT_DOCS_BASE_URL = 'https://www.cumulocity.com/guides';
34
+ this.DEFAULT_DOCS_BASE_URL = 'https://www.cumulocity.com/guides/{{ version }}';
35
35
  const supportUrlRefreshTrigger = this.app.map(({ supportUrl }) => supportUrl);
36
36
  this.items$ = fromTriggerOnce(router, [supportUrlRefreshTrigger, this.refreshTrigger], [getInjectedHooks(HOOK_DOCS, this.injectors), () => this.factories, this]).pipe(shareReplay(1), distinctUntilChanged());
37
37
  }
38
- getBaseUrl() {
39
- return this.options.get('docsBaseUrl', this.DEFAULT_DOCS_BASE_URL);
38
+ getBaseUrl(uiVersion) {
39
+ const docsBaseUrl = this.options.get('docsBaseUrl', this.DEFAULT_DOCS_BASE_URL);
40
+ return this.getUrlWithDocsVersion(docsBaseUrl, uiVersion);
41
+ }
42
+ /**
43
+ * Takes a URL and replaces all `{{ version }}` placeholders with the relevant docs version
44
+ * (the version is derived from the app state or from the provided parameter).
45
+ * @param url Any URL that contains `{{ version }}` placeholders.
46
+ * @param uiVersion A version string or object, defaults to the app state version.
47
+ * @returns The URL with replaced `{{ version }}` placeholders.
48
+ */
49
+ getUrlWithDocsVersion(url, uiVersion = this.app.uiVersion) {
50
+ const version = typeof uiVersion === 'string' ? uiVersion : get(uiVersion, 'ngx');
51
+ let docsVersion = '';
52
+ if (!(isUndefined(version) || version === '')) {
53
+ docsVersion = this.getDocsVersionForUiVersion(version);
54
+ }
55
+ return url.replace(/{{\s*version\s*}}/g, docsVersion).replace(/\/+$/g, '');
40
56
  }
41
57
  get templateStr() {
42
58
  return this.options.get('guideHrefTemplate', '${docsBaseUrl}${partialUrl}');
@@ -100,6 +116,22 @@ export class DocsService {
100
116
  const prefix = shouldPrefix ? '/' : '';
101
117
  return `${prefix}${partialLink}`;
102
118
  }
119
+ /**
120
+ * Returns the most relevant version of documentation for the given version of UI.
121
+ * For maintenance versions, it's the first version in the line, e.g. 1017.0.123 -> 10.17.0.
122
+ * For develop versions, it's the next minor one, e.g. 1017.123.0-SNAPSHOT -> 10.18.0.
123
+ *
124
+ * @param uiVersion The version of UI.
125
+ * @private
126
+ */
127
+ getDocsVersionForUiVersion(uiVersion) {
128
+ const [majorMinorStr, patchStr] = uiVersion.split('.');
129
+ const patchNumber = parseInt(patchStr, 10);
130
+ const takeNextMinor = patchNumber > 0;
131
+ const majorNumber = Math.floor(parseInt(majorMinorStr, 10) / 100);
132
+ const minorNumber = parseInt(majorMinorStr, 10) - majorNumber * 100 + (takeNextMinor ? 1 : 0);
133
+ return `${majorNumber}.${minorNumber}.0`;
134
+ }
103
135
  }
104
136
  DocsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DocsService, deps: [{ token: i1.OptionsService }, { token: i2.AppStateService }, { token: i0.Injector }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
105
137
  DocsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DocsService, providedIn: 'root' });
@@ -109,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
109
141
  providedIn: 'root'
110
142
  }]
111
143
  }], ctorParameters: function () { return [{ type: i1.OptionsService }, { type: i2.AppStateService }, { type: i0.Injector }, { type: i3.Router }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kb2NzL2RvY3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQVcsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQW9DLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBS3hDLE1BQU0sT0FBTyxXQUFXO0lBa0J0QixZQUNVLE9BQXVCLEVBQ3ZCLEdBQW9CLEVBQ3BCLFlBQXNCLEVBQzlCLE1BQWM7UUFITixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFpQjtRQUNwQixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQW5CaEM7O1dBRUc7UUFDSCxjQUFTLEdBQWdDLEVBQUUsQ0FBQztRQUM1Qzs7O1dBR0c7UUFDTSxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFF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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IGRvY3VtZW50YXRpb25JdGVtcyB9IGZyb20gJy4vZGVmYXVsdHMuaXRlbXMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBEb2NMaW5rLCBIT09LX0RPQ1MsIERvY0xpbmtXaXRoTGFiZWwgfSBmcm9tICcuL2RvY3MubW9kZWxzJztcbmltcG9ydCB7IEV4dGVuc2lvbkZhY3RvcnksIEV4dGVuc2lvblBvaW50LCBmcm9tVHJpZ2dlck9uY2UsIGdldEluamVjdGVkSG9va3MgfSBmcm9tICcuLi9jb21tb24vZXh0ZW5zaW9uLWhvb2tzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgZmlyc3QsIGZpbHRlciwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERvY3NTZXJ2aWNlIGltcGxlbWVudHMgRXh0ZW5zaW9uUG9pbnQ8RG9jTGluaz4ge1xuICBpdGVtcyQ6IE9ic2VydmFibGU8RG9jTGlua1tdPjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZmFjdG9yaWVzIHRoYXQgY2FuIGJlIGFkZGVkIGJ5IHBsdWdpbnMuXG4gICAqL1xuICBmYWN0b3JpZXM6IEV4dGVuc2lvbkZhY3Rvcnk8RG9jTGluaz5bXSA9IFtdO1xuICAvKipcbiAgICogUmVmcmVzaCB0aGUgZXh0ZW5zaW9uIGZhY3RvcmllcyBzdWJqZWN0LlxuICAgKiBAcmVhZG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hUcmlnZ2VyID0gbmV3IFN1YmplY3QoKTtcblxuICBpbmplY3RvcnMgPSBbdGhpcy5yb290SW5qZWN0b3JdO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGRvY3VtZW50YXRpb24gVVJMLlxuICAgKi9cbiAgcmVhZG9ubHkgREVGQVVMVF9ET0NTX0JBU0VfVVJMID0gJ2h0dHBzOi8vd3d3LmN1bXVsb2NpdHkuY29tL2d1aWRlcyc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHA6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvb3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgY29uc3Qgc3VwcG9ydFVybFJlZnJlc2hUcmlnZ2VyID0gdGhpcy5hcHAubWFwKCh7IHN1cHBvcnRVcmwgfSkgPT4gc3VwcG9ydFVybCk7XG5cbiAgICB0aGlzLml0ZW1zJCA9IGZyb21UcmlnZ2VyT25jZTxEb2NMaW5rPihcbiAgICAgIHJvdXRlcixcbiAgICAgIFtzdXBwb3J0VXJsUmVmcmVzaFRyaWdnZXIsIHRoaXMucmVmcmVzaFRyaWdnZXJdLFxuICAgICAgW2dldEluamVjdGVkSG9va3M8RG9jTGluaz4oSE9PS19ET0NTLCB0aGlzLmluamVjdG9ycyksICgpID0+IHRoaXMuZmFjdG9yaWVzLCB0aGlzXVxuICAgICkucGlwZShzaGFyZVJlcGxheSgxKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoJ2RvY3NCYXNlVXJsJywgdGhpcy5ERUZBVUxUX0RPQ1NfQkFTRV9VUkwpO1xuICB9XG5cbiAgZ2V0IHRlbXBsYXRlU3RyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoJ2d1aWRlSHJlZlRlbXBsYXRlJywgJyR7ZG9jc0Jhc2VVcmx9JHtwYXJ0aWFsVXJsfScpO1xuICB9XG5cbiAgZ2V0VXNlckd1aWRlTGluayhsaW5rKSB7XG4gICAgaWYgKC9eaHR0cHM/Oi8udGVzdChsaW5rKSkge1xuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICAgIGlmICh0aGlzLmdldEJhc2VVcmwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRMaW5rKHRoaXMudGVtcGxhdGVTdHIsIGxpbmspO1xuICB9XG5cbiAgbGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaSA9PiAhIWkubGVuZ3RoKSxcbiAgICAgICAgZmlyc3QoKVxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnJlZnJlc2hUcmlnZ2VyLm5leHQoMSk7XG4gIH1cblxuICBnZXQoKSB7XG4gICAgLy8gdXNlIHRoZSBmdW5jdGlvbiBhcyBhIGZhY3RvcnlcbiAgICBjb25zdCB7IGxpbmtzLCBub0RlZmF1bHQsIGV4Y2x1ZGVEZWZhdWx0ID0gW10gfSA9IHRoaXMub3B0aW9ucy5nZXQoJ2RvY3MnLCB7fSk7XG4gICAgY29uc3QgeyBzdXBwb3J0VXJsIH0gPSB0aGlzLmFwcC5zdGF0ZTtcbiAgICBsZXQgc3RhdGljTGlua3MgPSBub0RlZmF1bHRcbiAgICAgID8gW11cbiAgICAgIDogZG9jdW1lbnRhdGlvbkl0ZW1zXG4gICAgICAgICAgLm1hcCgoaXRlbTogRG9jTGlua1dpdGhMYWJlbCkgPT4gKHsgLi4uaXRlbSwgdXJsOiB0aGlzLmdldFVzZXJHdWlkZUxpbmsoaXRlbS51cmwpIH0pKVxuICAgICAgICAgIC5maWx0ZXIoKHsgdXJsIH0pID0+ICFleGNsdWRlRGVmYXVsdC5zb21lKGUgPT4gbmV3IFJlZ0V4cChlKS50ZXN0KHVybCkpKTtcblxuICAgIGlmIChsaW5rcykge1xuICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgIGxpbmtzLm1hcCgobG5rOiBEb2NMaW5rKSA9PiB7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChsbmsudHlwZSkpIHtcbiAgICAgICAgICBsbmsudHlwZSA9ICdkb2MnO1xuICAgICAgICAgIHJldHVybiBsbms7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3RhdGljTGlua3MgPSBzdGF0aWNMaW5rcy5jb25jYXQobGlua3MpO1xuICAgIH1cbiAgICBpZiAoc3VwcG9ydFVybCkge1xuICAgICAgc3RhdGljTGlua3MucHVzaCh7XG4gICAgICAgIGljb246ICdjb21tZW50cycsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGb3J1bSBzdXBwb3J0JyksXG4gICAgICAgIHVybDogc3VwcG9ydFVybCxcbiAgICAgICAgdHlwZTogJ2RvYydcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGljTGlua3M7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmsodGVtcGxhdGVTdHIsIHBhcnRpYWxMaW5rKSB7XG4gICAgaWYgKCF0ZW1wbGF0ZVN0cikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlU3RyXG4gICAgICAucmVwbGFjZSgvXFwke2RvY3NCYXNlVXJsfS8sIHRoaXMuZ2V0QmFzZVVybCgpKVxuICAgICAgLnJlcGxhY2UoL1xcJHtwYXJ0aWFsVXJsfS8sIHRoaXMucHJlZml4V2l0aFNsYXNoKHBhcnRpYWxMaW5rKSk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpeFdpdGhTbGFzaChwYXJ0aWFsTGluayA9ICcnKSB7XG4gICAgY29uc3Qgc2hvdWxkUHJlZml4ID0gIShwYXJ0aWFsTGluayAmJiAvXlxcLy8udGVzdChwYXJ0aWFsTGluaykpO1xuICAgIGNvbnN0IHByZWZpeCA9IHNob3VsZFByZWZpeCA/ICcvJyA6ICcnO1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtwYXJ0aWFsTGlua31gO1xuICB9XG59XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kb2NzL2RvY3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQVcsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQW9DLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUs3QyxNQUFNLE9BQU8sV0FBVztJQWtCdEIsWUFDVSxPQUF1QixFQUN2QixHQUFvQixFQUNwQixZQUFzQixFQUM5QixNQUFjO1FBSE4sWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFDcEIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFuQmhDOztXQUVHO1FBQ0gsY0FBUyxHQUFnQyxFQUFFLENBQUM7UUFDNUM7OztXQUdHO1FBQ00sbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFB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V0FBVyxJQUFJLFdBQVcsSUFBSSxDQUFDO0lBQzNDLENBQUM7O3dHQWpKVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBkb2N1bWVudGF0aW9uSXRlbXMgfSBmcm9tICcuL2RlZmF1bHRzLml0ZW1zJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgRG9jTGluaywgSE9PS19ET0NTLCBEb2NMaW5rV2l0aExhYmVsIH0gZnJvbSAnLi9kb2NzLm1vZGVscyc7XG5pbXBvcnQgeyBFeHRlbnNpb25GYWN0b3J5LCBFeHRlbnNpb25Qb2ludCwgZnJvbVRyaWdnZXJPbmNlLCBnZXRJbmplY3RlZEhvb2tzIH0gZnJvbSAnLi4vY29tbW9uL2V4dGVuc2lvbi1ob29rcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXksIGZpcnN0LCBmaWx0ZXIsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERvY3NTZXJ2aWNlIGltcGxlbWVudHMgRXh0ZW5zaW9uUG9pbnQ8RG9jTGluaz4ge1xuICBpdGVtcyQ6IE9ic2VydmFibGU8RG9jTGlua1tdPjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZmFjdG9yaWVzIHRoYXQgY2FuIGJlIGFkZGVkIGJ5IHBsdWdpbnMuXG4gICAqL1xuICBmYWN0b3JpZXM6IEV4dGVuc2lvbkZhY3Rvcnk8RG9jTGluaz5bXSA9IFtdO1xuICAvKipcbiAgICogUmVmcmVzaCB0aGUgZXh0ZW5zaW9uIGZhY3RvcmllcyBzdWJqZWN0LlxuICAgKiBAcmVhZG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hUcmlnZ2VyID0gbmV3IFN1YmplY3QoKTtcblxuICBpbmplY3RvcnMgPSBbdGhpcy5yb290SW5qZWN0b3JdO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGRvY3VtZW50YXRpb24gVVJMLlxuICAgKi9cbiAgcmVhZG9ubHkgREVGQVVMVF9ET0NTX0JBU0VfVVJMID0gJ2h0dHBzOi8vd3d3LmN1bXVsb2NpdHkuY29tL2d1aWRlcy97eyB2ZXJzaW9uIH19JztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFwcDogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm9vdEluamVjdG9yOiBJbmplY3RvcixcbiAgICByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBjb25zdCBzdXBwb3J0VXJsUmVmcmVzaFRyaWdnZXIgPSB0aGlzLmFwcC5tYXAoKHsgc3VwcG9ydFVybCB9KSA9PiBzdXBwb3J0VXJsKTtcblxuICAgIHRoaXMuaXRlbXMkID0gZnJvbVRyaWdnZXJPbmNlPERvY0xpbms+KFxuICAgICAgcm91dGVyLFxuICAgICAgW3N1cHBvcnRVcmxSZWZyZXNoVHJpZ2dlciwgdGhpcy5yZWZyZXNoVHJpZ2dlcl0sXG4gICAgICBbZ2V0SW5qZWN0ZWRIb29rczxEb2NMaW5rPihIT09LX0RPQ1MsIHRoaXMuaW5qZWN0b3JzKSwgKCkgPT4gdGhpcy5mYWN0b3JpZXMsIHRoaXNdXG4gICAgKS5waXBlKHNoYXJlUmVwbGF5KDEpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIGdldEJhc2VVcmwodWlWZXJzaW9uPzogc3RyaW5nIHwgeyBuZ3g6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBkb2NzQmFzZVVybCA9IHRoaXMub3B0aW9ucy5nZXQoJ2RvY3NCYXNlVXJsJywgdGhpcy5ERUZBVUxUX0RPQ1NfQkFTRV9VUkwpO1xuICAgIHJldHVybiB0aGlzLmdldFVybFdpdGhEb2NzVmVyc2lvbihkb2NzQmFzZVVybCwgdWlWZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIFVSTCBhbmQgcmVwbGFjZXMgYWxsIGB7eyB2ZXJzaW9uIH19YCBwbGFjZWhvbGRlcnMgd2l0aCB0aGUgcmVsZXZhbnQgZG9jcyB2ZXJzaW9uXG4gICAqICh0aGUgdmVyc2lvbiBpcyBkZXJpdmVkIGZyb20gdGhlIGFwcCBzdGF0ZSBvciBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXIpLlxuICAgKiBAcGFyYW0gdXJsIEFueSBVUkwgdGhhdCBjb250YWlucyBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXJzLlxuICAgKiBAcGFyYW0gdWlWZXJzaW9uIEEgdmVyc2lvbiBzdHJpbmcgb3Igb2JqZWN0LCBkZWZhdWx0cyB0byB0aGUgYXBwIHN0YXRlIHZlcnNpb24uXG4gICAqIEByZXR1cm5zIFRoZSBVUkwgd2l0aCByZXBsYWNlZCBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXJzLlxuICAgKi9cbiAgZ2V0VXJsV2l0aERvY3NWZXJzaW9uKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHVpVmVyc2lvbjogc3RyaW5nIHwgeyBuZ3g6IHN0cmluZyB9ID0gdGhpcy5hcHAudWlWZXJzaW9uXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgdmVyc2lvbjogc3RyaW5nID0gdHlwZW9mIHVpVmVyc2lvbiA9PT0gJ3N0cmluZycgPyB1aVZlcnNpb24gOiBnZXQodWlWZXJzaW9uLCAnbmd4Jyk7XG4gICAgbGV0IGRvY3NWZXJzaW9uID0gJyc7XG4gICAgaWYgKCEoaXNVbmRlZmluZWQodmVyc2lvbikgfHwgdmVyc2lvbiA9PT0gJycpKSB7XG4gICAgICBkb2NzVmVyc2lvbiA9IHRoaXMuZ2V0RG9jc1ZlcnNpb25Gb3JVaVZlcnNpb24odmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB1cmwucmVwbGFjZSgve3tcXHMqdmVyc2lvblxccyp9fS9nLCBkb2NzVmVyc2lvbikucmVwbGFjZSgvXFwvKyQvZywgJycpO1xuICB9XG5cbiAgZ2V0IHRlbXBsYXRlU3RyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoJ2d1aWRlSHJlZlRlbXBsYXRlJywgJyR7ZG9jc0Jhc2VVcmx9JHtwYXJ0aWFsVXJsfScpO1xuICB9XG5cbiAgZ2V0VXNlckd1aWRlTGluayhsaW5rKSB7XG4gICAgaWYgKC9eaHR0cHM/Oi8udGVzdChsaW5rKSkge1xuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICAgIGlmICh0aGlzLmdldEJhc2VVcmwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRMaW5rKHRoaXMudGVtcGxhdGVTdHIsIGxpbmspO1xuICB9XG5cbiAgbGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaSA9PiAhIWkubGVuZ3RoKSxcbiAgICAgICAgZmlyc3QoKVxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnJlZnJlc2hUcmlnZ2VyLm5leHQoMSk7XG4gIH1cblxuICBnZXQoKSB7XG4gICAgLy8gdXNlIHRoZSBmdW5jdGlvbiBhcyBhIGZhY3RvcnlcbiAgICBjb25zdCB7IGxpbmtzLCBub0RlZmF1bHQsIGV4Y2x1ZGVEZWZhdWx0ID0gW10gfSA9IHRoaXMub3B0aW9ucy5nZXQoJ2RvY3MnLCB7fSk7XG4gICAgY29uc3QgeyBzdXBwb3J0VXJsIH0gPSB0aGlzLmFwcC5zdGF0ZTtcbiAgICBsZXQgc3RhdGljTGlua3MgPSBub0RlZmF1bHRcbiAgICAgID8gW11cbiAgICAgIDogZG9jdW1lbnRhdGlvbkl0ZW1zXG4gICAgICAgICAgLm1hcCgoaXRlbTogRG9jTGlua1dpdGhMYWJlbCkgPT4gKHsgLi4uaXRlbSwgdXJsOiB0aGlzLmdldFVzZXJHdWlkZUxpbmsoaXRlbS51cmwpIH0pKVxuICAgICAgICAgIC5maWx0ZXIoKHsgdXJsIH0pID0+ICFleGNsdWRlRGVmYXVsdC5zb21lKGUgPT4gbmV3IFJlZ0V4cChlKS50ZXN0KHVybCkpKTtcblxuICAgIGlmIChsaW5rcykge1xuICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgIGxpbmtzLm1hcCgobG5rOiBEb2NMaW5rKSA9PiB7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZChsbmsudHlwZSkpIHtcbiAgICAgICAgICBsbmsudHlwZSA9ICdkb2MnO1xuICAgICAgICAgIHJldHVybiBsbms7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3RhdGljTGlua3MgPSBzdGF0aWNMaW5rcy5jb25jYXQobGlua3MpO1xuICAgIH1cbiAgICBpZiAoc3VwcG9ydFVybCkge1xuICAgICAgc3RhdGljTGlua3MucHVzaCh7XG4gICAgICAgIGljb246ICdjb21tZW50cycsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGb3J1bSBzdXBwb3J0JyksXG4gICAgICAgIHVybDogc3VwcG9ydFVybCxcbiAgICAgICAgdHlwZTogJ2RvYydcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGljTGlua3M7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmsodGVtcGxhdGVTdHIsIHBhcnRpYWxMaW5rKSB7XG4gICAgaWYgKCF0ZW1wbGF0ZVN0cikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlU3RyXG4gICAgICAucmVwbGFjZSgvXFwke2RvY3NCYXNlVXJsfS8sIHRoaXMuZ2V0QmFzZVVybCgpKVxuICAgICAgLnJlcGxhY2UoL1xcJHtwYXJ0aWFsVXJsfS8sIHRoaXMucHJlZml4V2l0aFNsYXNoKHBhcnRpYWxMaW5rKSk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpeFdpdGhTbGFzaChwYXJ0aWFsTGluayA9ICcnKSB7XG4gICAgY29uc3Qgc2hvdWxkUHJlZml4ID0gIShwYXJ0aWFsTGluayAmJiAvXlxcLy8udGVzdChwYXJ0aWFsTGluaykpO1xuICAgIGNvbnN0IHByZWZpeCA9IHNob3VsZFByZWZpeCA/ICcvJyA6ICcnO1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtwYXJ0aWFsTGlua31gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vc3QgcmVsZXZhbnQgdmVyc2lvbiBvZiBkb2N1bWVudGF0aW9uIGZvciB0aGUgZ2l2ZW4gdmVyc2lvbiBvZiBVSS5cbiAgICogRm9yIG1haW50ZW5hbmNlIHZlcnNpb25zLCBpdCdzIHRoZSBmaXJzdCB2ZXJzaW9uIGluIHRoZSBsaW5lLCBlLmcuIDEwMTcuMC4xMjMgLT4gMTAuMTcuMC5cbiAgICogRm9yIGRldmVsb3AgdmVyc2lvbnMsIGl0J3MgdGhlIG5leHQgbWlub3Igb25lLCBlLmcuIDEwMTcuMTIzLjAtU05BUFNIT1QgLT4gMTAuMTguMC5cbiAgICpcbiAgICogQHBhcmFtIHVpVmVyc2lvbiBUaGUgdmVyc2lvbiBvZiBVSS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0RG9jc1ZlcnNpb25Gb3JVaVZlcnNpb24odWlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBbbWFqb3JNaW5vclN0ciwgcGF0Y2hTdHJdID0gdWlWZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgcGF0Y2hOdW1iZXIgPSBwYXJzZUludChwYXRjaFN0ciwgMTApO1xuICAgIGNvbnN0IHRha2VOZXh0TWlub3IgPSBwYXRjaE51bWJlciA+IDA7XG4gICAgY29uc3QgbWFqb3JOdW1iZXIgPSBNYXRoLmZsb29yKHBhcnNlSW50KG1ham9yTWlub3JTdHIsIDEwKSAvIDEwMCk7XG4gICAgY29uc3QgbWlub3JOdW1iZXIgPSBwYXJzZUludChtYWpvck1pbm9yU3RyLCAxMCkgLSBtYWpvck51bWJlciAqIDEwMCArICh0YWtlTmV4dE1pbm9yID8gMSA6IDApO1xuICAgIHJldHVybiBgJHttYWpvck51bWJlcn0uJHttaW5vck51bWJlcn0uMGA7XG4gIH1cbn1cbiJdfQ==
@@ -1,21 +1,18 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { get, isUndefined } from 'lodash-es';
3
- import { AppStateService } from '../common/ui-state.service';
4
2
  import { DocsService } from '../docs/docs.service';
5
3
  import { HelpService } from './help.service';
6
4
  import * as i0 from "@angular/core";
7
5
  import * as i1 from "../docs/docs.service";
8
- import * as i2 from "../common/ui-state.service";
9
- import * as i3 from "./help.service";
10
- import * as i4 from "../common/icon.directive";
11
- import * as i5 from "../i18n/c8y-translate.directive";
12
- import * as i6 from "@angular/common";
13
- import * as i7 from "../common/loading.component";
14
- import * as i8 from "ngx-bootstrap/collapse";
15
- import * as i9 from "ngx-bootstrap/tooltip";
16
- import * as i10 from "../action-bar/action-bar-item.component";
17
- import * as i11 from "../product-experience/product-experience.directive";
18
- import * as i12 from "../i18n/c8y-translate.pipe";
6
+ import * as i2 from "./help.service";
7
+ import * as i3 from "../common/icon.directive";
8
+ import * as i4 from "../i18n/c8y-translate.directive";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "../common/loading.component";
11
+ import * as i7 from "ngx-bootstrap/collapse";
12
+ import * as i8 from "ngx-bootstrap/tooltip";
13
+ import * as i9 from "../action-bar/action-bar-item.component";
14
+ import * as i10 from "../product-experience/product-experience.directive";
15
+ import * as i11 from "../i18n/c8y-translate.pipe";
19
16
  /**
20
17
  * A component which shows a context help in
21
18
  * the action bar.
@@ -29,9 +26,8 @@ export class HelpComponent {
29
26
  /**
30
27
  * @ignore Only private DI
31
28
  */
32
- constructor(docsService, appState, helpService) {
29
+ constructor(docsService, helpService) {
33
30
  this.docsService = docsService;
34
- this.appState = appState;
35
31
  this.helpService = helpService;
36
32
  /**
37
33
  * The source of the documentation. Used to link to the documentation as well as
@@ -47,13 +43,7 @@ export class HelpComponent {
47
43
  */
48
44
  this.priority = Infinity;
49
45
  /**
50
- * Currrent version of the UI which will be used to get the correct data from
51
- * the docs. If the UI version is equal to the latest doc version, the value
52
- * must be ''.
53
- */
54
- this.version = this.parseVersion(this.appState.uiVersion);
55
- /**
56
- * An title. Set in open by passing the source.
46
+ * A title. Set in open by passing the source.
57
47
  */
58
48
  this.title = '';
59
49
  /**
@@ -99,23 +89,19 @@ export class HelpComponent {
99
89
  try {
100
90
  docsUrl =
101
91
  typeof this.helpService.contextHelp.value === 'string'
102
- ? new URL(this.helpService.contextHelp.value)
92
+ ? new URL(this.docsService.getUrlWithDocsVersion(this.helpService.contextHelp.value))
103
93
  : new URL(this.docsService.getBaseUrl());
104
94
  }
105
95
  catch (error) {
106
- docsUrl = new URL(this.docsService.DEFAULT_DOCS_BASE_URL);
96
+ docsUrl = new URL(this.docsService.getBaseUrl());
107
97
  console.warn(error);
108
98
  }
109
- const srcUrl = new URL(`${docsUrl}${src}`);
110
99
  const [url, hashFragment] = src.split('#');
111
100
  this.sectionHeading = hashFragment;
112
101
  if (index) {
113
102
  src = `${url}index.json`;
114
103
  }
115
- if (this.version === '') {
116
- return index ? `${docsUrl.href + src}` : srcUrl.href;
117
- }
118
- return `${docsUrl.href}/${this.version}${src}`;
104
+ return `${docsUrl.href}${src}`;
119
105
  }
120
106
  /**
121
107
  * Toggles the visibility of the help dialog.
@@ -159,19 +145,6 @@ export class HelpComponent {
159
145
  this.hasError = false;
160
146
  this.sectionContent = '';
161
147
  }
162
- parseVersion(uiVersion) {
163
- const version = typeof uiVersion === 'string' ? uiVersion : get(uiVersion, 'ngx');
164
- if (isUndefined(version)) {
165
- return undefined;
166
- }
167
- if (version === '') {
168
- return '';
169
- }
170
- const versionToParse = version.split('.').shift();
171
- const majorNumber = Math.floor(parseInt(versionToParse, 10) / 100);
172
- const minorNumber = parseInt(versionToParse, 10) - majorNumber * 100;
173
- return `${majorNumber}.${minorNumber}.0`;
174
- }
175
148
  resolveIcon() {
176
149
  try {
177
150
  const icon = Array.from(document.querySelector('nav .active i').classList).find(classes => classes.startsWith('c8y-icon-') || classes.startsWith('dlt-c8y-icon-'));
@@ -184,10 +157,6 @@ export class HelpComponent {
184
157
  render(req) {
185
158
  if (req.readyState === 4) {
186
159
  this.isLoading = false;
187
- if (req.status === 404 && this.version !== '') {
188
- this.version = '';
189
- this.open();
190
- }
191
160
  if (req.status === 200) {
192
161
  this.hasError = false;
193
162
  const sectionData = req.response[this.sectionHeading];
@@ -202,12 +171,12 @@ export class HelpComponent {
202
171
  }
203
172
  }
204
173
  }
205
- HelpComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, deps: [{ token: i1.DocsService }, { token: i2.AppStateService }, { token: i3.HelpService }], target: i0.ɵɵFactoryTarget.Component });
206
- HelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HelpComponent, selector: "c8y-help", inputs: { src: "src", isCollapsed: "isCollapsed", priority: "priority", icon: "icon" }, ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n >\n </button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div\n class=\"p-l-16 flex-grow\"\n *ngIf=\"!hasError\"\n >\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n [attr.aria-label]=\"'Close' | translate\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div\n id=\"helpContent\"\n class=\"help-content\"\n [innerHTML]=\"sectionContent\"\n ></div>\n </div>\n\n <div\n class=\"p-l-16 p-t-16 flex-grow\"\n *ngIf=\"hasError\"\n >\n <h4\n class=\"text-bold m-b-16\"\n translate\n >Sorry, that didn't work</h4>\n <div class=\"help-content\">\n <p translate>The content couldn't be loaded.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"toggle()\"\n [title]=\"'Close help' | translate\"\n type=\"button\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span\n translate\n *ngIf=\"!hasError\"\n >\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span\n translate\n *ngIf=\"hasError\"\n >\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i8.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i10.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i11.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "pipe", type: i12.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
174
+ HelpComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, deps: [{ token: i1.DocsService }, { token: i2.HelpService }], target: i0.ɵɵFactoryTarget.Component });
175
+ HelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HelpComponent, selector: "c8y-help", inputs: { src: "src", isCollapsed: "isCollapsed", priority: "priority", icon: "icon" }, ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n >\n </button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div\n class=\"p-l-16 flex-grow\"\n *ngIf=\"!hasError\"\n >\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n [attr.aria-label]=\"'Close' | translate\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div\n id=\"helpContent\"\n class=\"help-content\"\n [innerHTML]=\"sectionContent\"\n ></div>\n </div>\n\n <div\n class=\"p-l-16 p-t-16 flex-grow\"\n *ngIf=\"hasError\"\n >\n <h4\n class=\"text-bold m-b-16\"\n translate\n >Sorry, that didn't work</h4>\n <div class=\"help-content\">\n <p translate>The content couldn't be loaded.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"toggle()\"\n [title]=\"'Close help' | translate\"\n type=\"button\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span\n translate\n *ngIf=\"!hasError\"\n >\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span\n translate\n *ngIf=\"hasError\"\n >\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i9.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i10.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "pipe", type: i11.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
207
176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, decorators: [{
208
177
  type: Component,
209
178
  args: [{ selector: 'c8y-help', template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n >\n </button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div\n class=\"p-l-16 flex-grow\"\n *ngIf=\"!hasError\"\n >\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n [attr.aria-label]=\"'Close' | translate\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div\n id=\"helpContent\"\n class=\"help-content\"\n [innerHTML]=\"sectionContent\"\n ></div>\n </div>\n\n <div\n class=\"p-l-16 p-t-16 flex-grow\"\n *ngIf=\"hasError\"\n >\n <h4\n class=\"text-bold m-b-16\"\n translate\n >Sorry, that didn't work</h4>\n <div class=\"help-content\">\n <p translate>The content couldn't be loaded.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"toggle()\"\n [title]=\"'Close help' | translate\"\n type=\"button\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span\n translate\n *ngIf=\"!hasError\"\n >\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span\n translate\n *ngIf=\"hasError\"\n >\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>" }]
210
- }], ctorParameters: function () { return [{ type: i1.DocsService }, { type: i2.AppStateService }, { type: i3.HelpService }]; }, propDecorators: { src: [{
179
+ }], ctorParameters: function () { return [{ type: i1.DocsService }, { type: i2.HelpService }]; }, propDecorators: { src: [{
211
180
  type: Input
212
181
  }], isCollapsed: [{
213
182
  type: Input
@@ -216,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
216
185
  }], icon: [{
217
186
  type: Input
218
187
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFDN0M7Ozs7Ozs7O0dBUUc7QUFLSCxNQUFNLE9BQU8sYUFBYTtJQW9FeEI7O09BRUc7SUFDSCxZQUNVLFdBQXdCLEVBQ3hCLFFBQXlCLEVBQzFCLFdBQXdCO1FBRnZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBekVqQzs7O1dBR0c7UUFFSCxRQUFHLEdBQVcsRUFBRSxDQUFDO1FBRWpCOztXQUVHO1FBRUgsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkI7O1dBRUc7UUFFSCxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBUXBCOzs7O1dBSUc7UUFDSCxZQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXJEOztXQUVHO1FBQ0gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYOztXQUVHO1FBQ0gsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLEVBQUUsQ0FB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YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQzs7MEdBbk5VLGFBQWE7OEZBQWIsYUFBYSx3SUNsQjFCLDRySEF5SU07MkZEdkhPLGFBQWE7a0JBSnpCLFNBQVM7K0JBQ0UsVUFBVTswSkFTcEIsR0FBRztzQkFERixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0LCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBEb2NzU2VydmljZSB9IGZyb20gJy4uL2RvY3MvZG9jcy5zZXJ2aWNlJztcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwLnNlcnZpY2UnO1xuLyoqXG4gKiBBIGNvbXBvbmVudCB3aGljaCBzaG93cyBhIGNvbnRleHQgaGVscCBpblxuICogdGhlIGFjdGlvbiBiYXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jZGFzaGJvYXJkc1wiPjwvYzh5LWhlbHA+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWhlbHAnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVscC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSGVscENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBkb2N1bWVudGF0aW9uLiBVc2VkIHRvIGxpbmsgdG8gdGhlIGRvY3VtZW50YXRpb24gYXMgd2VsbCBhc1xuICAgKiB0byBwYXJzZSB0aGUgc291cmNlIHRvIGRpc3BsYXkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzcmM6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGhlbHAgZGlhbG9nIGlzIGNvbGxhcHNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHByaW9yaXR5IHdoZXJlIHRoZSBoZWxwIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYmFyXG4gICAqL1xuICBASW5wdXQoKVxuICBwcmlvcml0eSA9IEluZmluaXR5O1xuXG4gIC8qKlxuICAgKiBBbiBjdXN0b20gaWNvbi4gSWYgbm90IHNldCwgdGhlIG5hdmlnYXRvciBpY29uIGlzIHJlc29sdmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uO1xuXG4gIC8qKlxuICAgKiBDdXJycmVudCB2ZXJzaW9uIG9mIHRoZSBVSSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZ2V0IHRoZSBjb3JyZWN0IGRhdGEgZnJvbVxuICAgKiB0aGUgZG9jcy4gSWYgdGhlIFVJIHZlcnNpb24gaXMgZXF1YWwgdG8gdGhlIGxhdGVzdCBkb2MgdmVyc2lvbiwgdGhlIHZhbHVlXG4gICAqIG11c3QgYmUgJycuXG4gICAqL1xuICB2ZXJzaW9uID0gdGhpcy5wYXJzZVZlcnNpb24odGhpcy5hcHBTdGF0ZS51aVZlcnNpb24pO1xuXG4gIC8qKlxuICAgKiBBbiB0aXRsZS4gU2V0IGluIG9wZW4gYnkgcGFzc2luZyB0aGUgc291cmNlLlxuICAgKi9cbiAgdGl0bGUgPSAnJztcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24gaGVhZGluZyBpbiB0aGUgZG9jIHdoaWNoIGlzIGdvaW5nIHRvIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIHNlY3Rpb25IZWFkaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIGNvbnRlbnQgaW4gdGhlIGRvYyB3aGljaCBpcyBnb2luZyB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBzZWN0aW9uQ29udGVudCA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbXBvbmVudCBpcyBsb2FkaW5nLlxuICAgKi9cbiAgaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgZmFpbGVkIGxvYWRpbmcgdGhlIHNvdXJjZS5cbiAgICovXG4gIGhhc0Vycm9yID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBhIHdhcm5pbmcgc2hvdWxkIGJlIHNob3duLlxuICAgKi9cbiAgc2hvd0xhbmdXYXJuaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlzSW5pdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlIE9ubHkgcHJpdmF0ZSBESVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkb2NzU2VydmljZTogRG9jc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBoZWxwU2VydmljZTogSGVscFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGlzIHNob3duIGJ5IGRlZmF1bHQgYW5kIHRoZXJlZm9yZSBicmVha3MgZTJlIHRlc3QuIFRoaXMgaXNcbiAgICogdG8gcHJldmVudCB0aGUgdmlzaWJpbGl0eSBvbiBmaXJzdCBuYXZpZ2F0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbGxhcHNlZCgpIHtcbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBVUkwgYmFzZWQgb24gdGhlIHNyYy4gVGhlIEJhc2UgVVJMIGNhbiBiZSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG9wdGlvbnMgZG9jQmFzZVVybC5cbiAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9mIHRoZSBoZWxwIG9uIHRoZSBndWlkZS5cbiAgICogQHBhcmFtIGluZGV4IFRoaXMgZmxhZyBpcyB1c2VkIHRvIGNhbGwgdGhlIGluZGV4Lmpzb24gY29udGVudCBvZiBhIGd1aWRlLiBGb3IgZXhhbXBsZSwgXCJodHRwczovL3d3dy5jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvY29ja3BpdC9pbmRleC5qc29uXCIuXG4gICAqL1xuICBnZXRVcmwoc3JjID0gJycsIGluZGV4ID0gZmFsc2UpIHtcbiAgICBsZXQgZG9jc1VybDtcblxuICAgIHRyeSB7XG4gICAgICBkb2NzVXJsID1cbiAgICAgICAgdHlwZW9mIHRoaXMuaGVscFNlcnZpY2UuY29udGV4dEhlbHAudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBuZXcgVVJMKHRoaXMuaGVscFNlcnZpY2UuY29udGV4dEhlbHAudmFsdWUpXG4gICAgICAgICAgOiBuZXcgVVJMKHRoaXMuZG9jc1NlcnZpY2UuZ2V0QmFzZVVybCgpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZG9jc1VybCA9IG5ldyBVUkwodGhpcy5kb2NzU2VydmljZS5ERUZBVUxUX0RPQ1NfQkFTRV9VUkwpO1xuICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcmNVcmwgPSBuZXcgVVJMKGAke2RvY3NVcmx9JHtzcmN9YCk7XG5cbiAgICBjb25zdCBbdXJsLCBoYXNoRnJhZ21lbnRdID0gc3JjLnNwbGl0KCcjJyk7XG4gICAgdGhpcy5zZWN0aW9uSGVhZGluZyA9IGhhc2hGcmFnbWVudDtcblxuICAgIGlmIChpbmRleCkge1xuICAgICAgc3JjID0gYCR7dXJsfWluZGV4Lmpzb25gO1xuICAgIH1cbiAgICBpZiAodGhpcy52ZXJzaW9uID09PSAnJykge1xuICAgICAgcmV0dXJuIGluZGV4ID8gYCR7ZG9jc1VybC5ocmVmICsgc3JjfWAgOiBzcmNVcmwuaHJlZjtcbiAgICB9XG4gICAgcmV0dXJuIGAke2RvY3NVcmwuaHJlZn0vJHt0aGlzLnZlcnNpb259JHtzcmN9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGhlbHAgZGlhbG9nLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgdGhpcy5jbGVhbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlcXVlc3RDb250ZW50KCk7XG4gICAgaWYgKCF0aGlzLmljb24pIHtcbiAgICAgIHRoaXMuaWNvbiA9IHRoaXMucmVzb2x2ZUljb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RDb250ZW50KCkge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB0aGlzLnJlbmRlcihyZXEpO1xuICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gdGhpcy5yZW5kZXIocmVxKSk7XG4gICAgcmVxLm9wZW4oJ0dFVCcsIHRoaXMuZ2V0VXJsKHRoaXMuc3JjLCB0cnVlKSk7XG4gICAgcmVxLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ3RleHQvaHRtbCcpO1xuICAgIHJlcS5zZW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuKCkge1xuICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWN0aW9uQ29udGVudCA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVZlcnNpb24odWlWZXJzaW9uOiBzdHJpbmcgfCB7IG5neDogc3RyaW5nIH0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHZlcnNpb246IHN0cmluZyA9IHR5cGVvZiB1aVZlcnNpb24gPT09ICdzdHJpbmcnID8gdWlWZXJzaW9uIDogZ2V0KHVpVmVyc2lvbiwgJ25neCcpO1xuXG4gICAgaWYgKGlzVW5kZWZpbmVkKHZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uID09PSAnJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcnNpb25Ub1BhcnNlID0gdmVyc2lvbi5zcGxpdCgnLicpLnNoaWZ0KCk7XG4gICAgY29uc3QgbWFqb3JOdW1iZXIgPSBNYXRoLmZsb29yKHBhcnNlSW50KHZlcnNpb25Ub1BhcnNlLCAxMCkgLyAxMDApO1xuICAgIGNvbnN0IG1pbm9yTnVtYmVyID0gcGFyc2VJbnQodmVyc2lvblRvUGFyc2UsIDEwKSAtIG1ham9yTnVtYmVyICogMTAwO1xuICAgIHJldHVybiBgJHttYWpvck51bWJlcn0uJHttaW5vck51bWJlcn0uMGA7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJY29uKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpY29uID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCduYXYgLmFjdGl2ZSBpJykuY2xhc3NMaXN0KS5maW5kKFxuICAgICAgICBjbGFzc2VzID0+IGNsYXNzZXMuc3RhcnRzV2l0aCgnYzh5LWljb24tJykgfHwgY2xhc3Nlcy5zdGFydHNXaXRoKCdkbHQtYzh5LWljb24tJylcbiAgICAgICk7XG4gICAgICByZXR1cm4gaWNvbi5yZXBsYWNlKCdkbHQtYzh5LWljb24tJywgJycpLnJlcGxhY2UoJ2M4eS1pY29uLScsICdjOHktJyk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHJldHVybiAnbGlmZS1zYXZlcic7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIocmVxOiBYTUxIdHRwUmVxdWVzdCkge1xuICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGlmIChyZXEuc3RhdHVzID09PSA0MDQgJiYgdGhpcy52ZXJzaW9uICE9PSAnJykge1xuICAgICAgICB0aGlzLnZlcnNpb24gPSAnJztcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICB9XG4gICAgICBpZiAocmVxLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkRhdGEgPSByZXEucmVzcG9uc2VbdGhpcy5zZWN0aW9uSGVhZGluZ107XG4gICAgICAgIGlmIChzZWN0aW9uRGF0YSkge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSBzZWN0aW9uRGF0YS50aXRsZTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25Db250ZW50ID0gc2VjdGlvbkRhdGEuaGVscGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgaXRlbUNsYXNzPVwicHVsbC1yaWdodCBtLWwtOFwiXG4gIFtwcmlvcml0eV09XCJwcmlvcml0eVwiXG4gICpuZ0lmPVwiISEoaGVscFNlcnZpY2UuY29udGV4dEhlbHAgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWJvdXQgdGhpcyBwYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhaXNDb2xsYXBzZWRcIlxuICAgIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUhlbHBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnQWJvdXQgdGhpcyBwYWdlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW2RlbGF5XT1cIjc1MFwiXG4gICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cImlzQ29sbGFwc2VkID8gJ2hlbHBPcGVuZWQnIDogJ2hlbHBDbG9zZWQnXCJcbiAgICBbYWN0aW9uRGF0YV09XCJ7IHNyYzogc3JjIH1cIlxuICA+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2XG4gIGlkPVwiY29sbGFwc2VIZWxwXCJcbiAgY2xhc3M9XCJjOHktaGVscC1kcmF3ZXJcIlxuICBbY29sbGFwc2VdPVwiaXNDb2xsYXBzZWRcIlxuICBbaXNBbmltYXRlZF09XCJ0cnVlXCJcbiAgKGNvbGxhcHNlZCk9XCJvbkNvbGxhcHNlZCgpXCJcbj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJ2M4eS1oZWxwLWRyYXdlci1ibG9jayc6IGlzSW5pdCB9XCJcbiAgICAjZG9jT3V0bGV0XG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgW2M4eUljb25dPVwiIWhhc0Vycm9yID8gaWNvbiA6ICd1bmxpbmsnXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LXdhcm5pbmcnOiBoYXNFcnJvciwgJ3RleHQtbXV0ZWQnOiAhaGFzRXJyb3IgfVwiXG4gICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4XCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicC1sLTE2IGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgKm5nSWY9XCIhaGFzRXJyb3JcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0xNlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAhaGVscFNlcnZpY2UuaXNTdXBwb3J0ZWRMYW5ndWFnZSgpICYmXG4gICAgICAgICAgICAgICFzaG93TGFuZ1dhcm5pbmcgJiZcbiAgICAgICAgICAgICAgIWhlbHBTZXJ2aWNlLmlzV2FybmluZ0FsZXJ0Vmlld2VkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgc2hvd0xhbmdXYXJuaW5nID0gIXNob3dMYW5nV2FybmluZztcbiAgICAgICAgICAgICAgICBoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZCA9ICFoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDbG9zZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyAnSGVscCBjb250ZW50IGlzIG9ubHkgYXZhaWxhYmxlIGluIEVuZ2xpc2guJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtYm9sZCB0ZXh0LXByaW1hcnkgcC10LTE2IG0tYi0xNlwiPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGlkPVwiaGVscENvbnRlbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJoZWxwLWNvbnRlbnRcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uQ29udGVudFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwLWwtMTYgcC10LTE2IGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgKm5nSWY9XCJoYXNFcnJvclwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDRcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2xkIG0tYi0xNlwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+U29ycnksIHRoYXQgZGlkbid0IHdvcms8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxwIHRyYW5zbGF0ZT5UaGUgY29udGVudCBjb3VsZG4ndCBiZSBsb2FkZWQuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWhlbHAtZHJhd2VyLWZvb3RlciBhbmltYXRlZCBmYWRlSW5cIlxuICAgIHN0eWxlPVwiYW5pbWF0aW9uLWRlbGF5OiAwLjM1c1wiXG4gICAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFoYXNFcnJvclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgW3RpdGxlXT1cIidDbG9zZSBoZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWlzQ29sbGFwc2VkXCJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUhlbHBcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgICA8YVxuICAgICAgaHJlZj1cInt7IGhhc0Vycm9yID8gZ2V0VXJsKCkgOiBnZXRVcmwoc3JjKSB9fVwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICpuZ0lmPVwiIWhhc0Vycm9yXCJcbiAgICAgID5cbiAgICAgICAgT3BlbiB0aGVcbiAgICAgICAgPHNwYW4+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAqbmdJZj1cImhhc0Vycm9yXCJcbiAgICAgID5cbiAgICAgICAgQ2hlY2sgdGhlXG4gICAgICAgIDxzcGFuPlVzZXIgZ3VpZGVgS0VFUF9PUklHSU5BTGA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2hlbHAvaGVscC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBRTdDOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLGFBQWE7SUE2RHhCOztPQUVHO0lBQ0gsWUFBb0IsV0FBd0IsRUFBUyxXQUF3QjtRQUF6RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBL0Q3RTs7O1dBR0c7UUFFSCxRQUFHLEdBQVcsRUFBRSxDQUFDO1FBRWpCOztXQUVHO1FBRUgsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkI7O1dBRUc7UUFFSCxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBUXBCOztXQUVHO1FBQ0gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYOztXQUVHO1FBQ0gsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFDSCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7V0FFRztRQUNILGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakI7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCOztXQUVHO1FBQ0gsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakM7O1dBRUc7UUFDSCxXQUFNLEdBQUcsS0FBSyxDQUFDO0lBS2lFLENBQUM7SUFFakY7Ozs7T0FJRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FB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O3NCQURQLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jc1NlcnZpY2UgfSBmcm9tICcuLi9kb2NzL2RvY3Muc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwU2VydmljZSB9IGZyb20gJy4vaGVscC5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB3aGljaCBzaG93cyBhIGNvbnRleHQgaGVscCBpblxuICogdGhlIGFjdGlvbiBiYXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jZGFzaGJvYXJkc1wiPjwvYzh5LWhlbHA+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWhlbHAnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVscC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSGVscENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBkb2N1bWVudGF0aW9uLiBVc2VkIHRvIGxpbmsgdG8gdGhlIGRvY3VtZW50YXRpb24gYXMgd2VsbCBhc1xuICAgKiB0byBwYXJzZSB0aGUgc291cmNlIHRvIGRpc3BsYXkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzcmM6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGhlbHAgZGlhbG9nIGlzIGNvbGxhcHNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHByaW9yaXR5IHdoZXJlIHRoZSBoZWxwIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYmFyXG4gICAqL1xuICBASW5wdXQoKVxuICBwcmlvcml0eSA9IEluZmluaXR5O1xuXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBpY29uLiBJZiBub3Qgc2V0LCB0aGUgbmF2aWdhdG9yIGljb24gaXMgcmVzb2x2ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb247XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUuIFNldCBpbiBvcGVuIGJ5IHBhc3NpbmcgdGhlIHNvdXJjZS5cbiAgICovXG4gIHRpdGxlID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIGhlYWRpbmcgaW4gdGhlIGRvYyB3aGljaCBpcyBnb2luZyB0byBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBzZWN0aW9uSGVhZGluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbiBjb250ZW50IGluIHRoZSBkb2Mgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgc2VjdGlvbkNvbnRlbnQgPSAnJztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgaXMgbG9hZGluZy5cbiAgICovXG4gIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY29tcG9uZW50IGZhaWxlZCBsb2FkaW5nIHRoZSBzb3VyY2UuXG4gICAqL1xuICBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB3YXJuaW5nIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIHNob3dMYW5nV2FybmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGlnbm9yZSBPbmx5IHByaXZhdGUgRElcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9jc1NlcnZpY2U6IERvY3NTZXJ2aWNlLCBwdWJsaWMgaGVscFNlcnZpY2U6IEhlbHBTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGlzIHNob3duIGJ5IGRlZmF1bHQgYW5kIHRoZXJlZm9yZSBicmVha3MgZTJlIHRlc3QuIFRoaXMgaXNcbiAgICogdG8gcHJldmVudCB0aGUgdmlzaWJpbGl0eSBvbiBmaXJzdCBuYXZpZ2F0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbGxhcHNlZCgpIHtcbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBVUkwgYmFzZWQgb24gdGhlIHNyYy4gVGhlIEJhc2UgVVJMIGNhbiBiZSBzZXQgaW4gdGhlIGFwcGxpY2F0aW9uIG9wdGlvbnMgZG9jQmFzZVVybC5cbiAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9mIHRoZSBoZWxwIG9uIHRoZSBndWlkZS5cbiAgICogQHBhcmFtIGluZGV4IFRoaXMgZmxhZyBpcyB1c2VkIHRvIGNhbGwgdGhlIGluZGV4Lmpzb24gY29udGVudCBvZiBhIGd1aWRlLiBGb3IgZXhhbXBsZSwgXCJodHRwczovL3d3dy5jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvY29ja3BpdC9pbmRleC5qc29uXCIuXG4gICAqL1xuICBnZXRVcmwoc3JjID0gJycsIGluZGV4ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGxldCBkb2NzVXJsOiBVUkw7XG5cbiAgICB0cnkge1xuICAgICAgZG9jc1VybCA9XG4gICAgICAgIHR5cGVvZiB0aGlzLmhlbHBTZXJ2aWNlLmNvbnRleHRIZWxwLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gbmV3IFVSTCh0aGlzLmRvY3NTZXJ2aWNlLmdldFVybFdpdGhEb2NzVmVyc2lvbih0aGlzLmhlbHBTZXJ2aWNlLmNvbnRleHRIZWxwLnZhbHVlKSlcbiAgICAgICAgICA6IG5ldyBVUkwodGhpcy5kb2NzU2VydmljZS5nZXRCYXNlVXJsKCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkb2NzVXJsID0gbmV3IFVSTCh0aGlzLmRvY3NTZXJ2aWNlLmdldEJhc2VVcmwoKSk7XG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IFt1cmwsIGhhc2hGcmFnbWVudF0gPSBzcmMuc3BsaXQoJyMnKTtcbiAgICB0aGlzLnNlY3Rpb25IZWFkaW5nID0gaGFzaEZyYWdtZW50O1xuXG4gICAgaWYgKGluZGV4KSB7XG4gICAgICBzcmMgPSBgJHt1cmx9aW5kZXguanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBgJHtkb2NzVXJsLmhyZWZ9JHtzcmN9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGhlbHAgZGlhbG9nLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgdGhpcy5jbGVhbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlcXVlc3RDb250ZW50KCk7XG4gICAgaWYgKCF0aGlzLmljb24pIHtcbiAgICAgIHRoaXMuaWNvbiA9IHRoaXMucmVzb2x2ZUljb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RDb250ZW50KCkge1xuICAgIGNvbnN0IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB0aGlzLnJlbmRlcihyZXEpO1xuICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gdGhpcy5yZW5kZXIocmVxKSk7XG4gICAgcmVxLm9wZW4oJ0dFVCcsIHRoaXMuZ2V0VXJsKHRoaXMuc3JjLCB0cnVlKSk7XG4gICAgcmVxLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ3RleHQvaHRtbCcpO1xuICAgIHJlcS5zZW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuKCkge1xuICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWN0aW9uQ29udGVudCA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSWNvbigpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaWNvbiA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbmF2IC5hY3RpdmUgaScpLmNsYXNzTGlzdCkuZmluZChcbiAgICAgICAgY2xhc3NlcyA9PiBjbGFzc2VzLnN0YXJ0c1dpdGgoJ2M4eS1pY29uLScpIHx8IGNsYXNzZXMuc3RhcnRzV2l0aCgnZGx0LWM4eS1pY29uLScpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGljb24ucmVwbGFjZSgnZGx0LWM4eS1pY29uLScsICcnKS5yZXBsYWNlKCdjOHktaWNvbi0nLCAnYzh5LScpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICByZXR1cm4gJ2xpZmUtc2F2ZXInO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKHJlcTogWE1MSHR0cFJlcXVlc3QpIHtcbiAgICBpZiAocmVxLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAocmVxLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkRhdGEgPSByZXEucmVzcG9uc2VbdGhpcy5zZWN0aW9uSGVhZGluZ107XG4gICAgICAgIGlmIChzZWN0aW9uRGF0YSkge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSBzZWN0aW9uRGF0YS50aXRsZTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25Db250ZW50ID0gc2VjdGlvbkRhdGEuaGVscGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgaXRlbUNsYXNzPVwicHVsbC1yaWdodCBtLWwtOFwiXG4gIFtwcmlvcml0eV09XCJwcmlvcml0eVwiXG4gICpuZ0lmPVwiISEoaGVscFNlcnZpY2UuY29udGV4dEhlbHAgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWJvdXQgdGhpcyBwYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhaXNDb2xsYXBzZWRcIlxuICAgIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUhlbHBcIlxuICAgIHRvb2x0aXA9XCJ7eyAnQWJvdXQgdGhpcyBwYWdlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW2RlbGF5XT1cIjc1MFwiXG4gICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cImlzQ29sbGFwc2VkID8gJ2hlbHBPcGVuZWQnIDogJ2hlbHBDbG9zZWQnXCJcbiAgICBbYWN0aW9uRGF0YV09XCJ7IHNyYzogc3JjIH1cIlxuICA+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2XG4gIGlkPVwiY29sbGFwc2VIZWxwXCJcbiAgY2xhc3M9XCJjOHktaGVscC1kcmF3ZXJcIlxuICBbY29sbGFwc2VdPVwiaXNDb2xsYXBzZWRcIlxuICBbaXNBbmltYXRlZF09XCJ0cnVlXCJcbiAgKGNvbGxhcHNlZCk9XCJvbkNvbGxhcHNlZCgpXCJcbj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJ2M4eS1oZWxwLWRyYXdlci1ibG9jayc6IGlzSW5pdCB9XCJcbiAgICAjZG9jT3V0bGV0XG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgW2M4eUljb25dPVwiIWhhc0Vycm9yID8gaWNvbiA6ICd1bmxpbmsnXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LXdhcm5pbmcnOiBoYXNFcnJvciwgJ3RleHQtbXV0ZWQnOiAhaGFzRXJyb3IgfVwiXG4gICAgICAgICAgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4XCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicC1sLTE2IGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgKm5nSWY9XCIhaGFzRXJyb3JcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0xNlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAhaGVscFNlcnZpY2UuaXNTdXBwb3J0ZWRMYW5ndWFnZSgpICYmXG4gICAgICAgICAgICAgICFzaG93TGFuZ1dhcm5pbmcgJiZcbiAgICAgICAgICAgICAgIWhlbHBTZXJ2aWNlLmlzV2FybmluZ0FsZXJ0Vmlld2VkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgc2hvd0xhbmdXYXJuaW5nID0gIXNob3dMYW5nV2FybmluZztcbiAgICAgICAgICAgICAgICBoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZCA9ICFoZWxwU2VydmljZS5pc1dhcm5pbmdBbGVydFZpZXdlZFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDbG9zZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyAnSGVscCBjb250ZW50IGlzIG9ubHkgYXZhaWxhYmxlIGluIEVuZ2xpc2guJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtYm9sZCB0ZXh0LXByaW1hcnkgcC10LTE2IG0tYi0xNlwiPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGlkPVwiaGVscENvbnRlbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJoZWxwLWNvbnRlbnRcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uQ29udGVudFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwLWwtMTYgcC10LTE2IGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgKm5nSWY9XCJoYXNFcnJvclwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDRcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ib2xkIG0tYi0xNlwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+U29ycnksIHRoYXQgZGlkbid0IHdvcms8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxwIHRyYW5zbGF0ZT5UaGUgY29udGVudCBjb3VsZG4ndCBiZSBsb2FkZWQuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWhlbHAtZHJhd2VyLWZvb3RlciBhbmltYXRlZCBmYWRlSW5cIlxuICAgIHN0eWxlPVwiYW5pbWF0aW9uLWRlbGF5OiAwLjM1c1wiXG4gICAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFoYXNFcnJvclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgW3RpdGxlXT1cIidDbG9zZSBoZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWlzQ29sbGFwc2VkXCJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUhlbHBcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgICA8YVxuICAgICAgaHJlZj1cInt7IGhhc0Vycm9yID8gZ2V0VXJsKCkgOiBnZXRVcmwoc3JjKSB9fVwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICpuZ0lmPVwiIWhhc0Vycm9yXCJcbiAgICAgID5cbiAgICAgICAgT3BlbiB0aGVcbiAgICAgICAgPHNwYW4+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAqbmdJZj1cImhhc0Vycm9yXCJcbiAgICAgID5cbiAgICAgICAgQ2hlY2sgdGhlXG4gICAgICAgIDxzcGFuPlVzZXIgZ3VpZGVgS0VFUF9PUklHSU5BTGA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==