@hestia-earth/ui-components 0.24.1 → 0.24.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/utils.d.ts +25 -1
- package/engine/aggregation-engine.service.d.ts +3 -1
- package/engine/engine.service.d.ts +3 -1
- package/esm2022/common/utils.mjs +7 -2
- package/esm2022/engine/aggregation-engine.service.mjs +15 -8
- package/esm2022/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.mjs +3 -3
- package/esm2022/engine/engine.service.mjs +14 -9
- package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +6 -5
- package/esm2022/node/node-logs-models/node-logs-models.component.mjs +8 -8
- package/fesm2022/hestia-earth-ui-components.mjs +43 -27
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +2 -6
- package/node/node-logs-models/node-logs-models.component.d.ts +1 -1
- package/package.json +1 -1
package/common/utils.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const gitHome = "https://gitlab.com/hestia-earth";
|
|
2
|
-
export declare const gitRawBaseUrl = "https://gl.githack.com/hestia-earth";
|
|
3
2
|
export declare const gitBranch: () => "develop" | "master";
|
|
4
3
|
export declare const isChrome: () => boolean;
|
|
5
4
|
export declare const baseUrl: () => string;
|
|
5
|
+
export declare const baseApiUrl: () => string;
|
|
6
6
|
export declare const isExternal: () => boolean;
|
|
7
7
|
export declare const handleAPIError: (error: any) => never;
|
|
8
8
|
export declare const errorText: (error: any) => string;
|
|
@@ -43,6 +43,7 @@ export declare enum Template {
|
|
|
43
43
|
feature = "feature"
|
|
44
44
|
}
|
|
45
45
|
export declare const reportIssueUrl: (repository: Repository, template?: Template) => string;
|
|
46
|
+
export declare const changelogUrl: (repository: Repository) => string;
|
|
46
47
|
export declare const contactUsEmail = "community@hestia.earth";
|
|
47
48
|
export declare const externalLink: (href: string, text: string) => string;
|
|
48
49
|
export declare const glossaryLink: (text: string) => string;
|
|
@@ -55,3 +56,26 @@ export declare const schemaLink: (type: string, title?: string) => string;
|
|
|
55
56
|
export declare const code: (text: string | number | boolean) => string;
|
|
56
57
|
export declare const contactUsLink: (text?: string) => string;
|
|
57
58
|
export declare const reportIssueLink: (repository: Repository, template?: Template, text?: string) => string;
|
|
59
|
+
interface IGitlabRawParams {
|
|
60
|
+
/**
|
|
61
|
+
* The repository where the file is located.
|
|
62
|
+
*/
|
|
63
|
+
repository: Repository;
|
|
64
|
+
/**
|
|
65
|
+
* The path of the file, from the root of the repository.
|
|
66
|
+
*/
|
|
67
|
+
path: string;
|
|
68
|
+
/**
|
|
69
|
+
* The base url of the Hestia API.
|
|
70
|
+
*/
|
|
71
|
+
apiUrl?: string;
|
|
72
|
+
/**
|
|
73
|
+
* The branch, using the default branch based on the environment.
|
|
74
|
+
*/
|
|
75
|
+
branch?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Url to fetch raw content from Gitlab, bypassing CORS issues.
|
|
79
|
+
*/
|
|
80
|
+
export declare const gitlabRawUrl: ({ repository, path, apiUrl, branch }: IGitlabRawParams) => string;
|
|
81
|
+
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { NodeType } from '@hestia-earth/schema';
|
|
3
|
+
import { HeCommonService } from '../common/common.service';
|
|
3
4
|
import { HeNodeService } from '../node/node.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare const lookups: Readonly<{
|
|
@@ -22,10 +23,11 @@ export interface IAggregationModel {
|
|
|
22
23
|
export declare class HeAggregationEngineService {
|
|
23
24
|
protected http: HttpClient;
|
|
24
25
|
protected nodeService: HeNodeService;
|
|
26
|
+
protected commonService: HeCommonService;
|
|
25
27
|
private modelsLoading;
|
|
26
28
|
private modelsLoaded;
|
|
27
29
|
private _models;
|
|
28
|
-
constructor(http: HttpClient, nodeService: HeNodeService);
|
|
30
|
+
constructor(http: HttpClient, nodeService: HeNodeService, commonService: HeCommonService);
|
|
29
31
|
private init;
|
|
30
32
|
private loadModels;
|
|
31
33
|
private get models$();
|
|
@@ -2,6 +2,7 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { EmissionMethodTier, JSONLD, NodeType, SchemaType, SiteSiteType, TermTermType } from '@hestia-earth/schema';
|
|
5
|
+
import { HeCommonService } from '../common/common.service';
|
|
5
6
|
import { blankNode } from '../common/node-utils';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare const HE_CALCULATIONS_BASE_URL: InjectionToken<string>;
|
|
@@ -92,13 +93,14 @@ export declare class HeEngineService {
|
|
|
92
93
|
private _calculationsBaseUrl;
|
|
93
94
|
private _orchestratorBaseUrl;
|
|
94
95
|
protected http: HttpClient;
|
|
96
|
+
protected commonService: HeCommonService;
|
|
95
97
|
private modelsLoading;
|
|
96
98
|
private modelsLoaded;
|
|
97
99
|
private _models;
|
|
98
100
|
private _recommendations;
|
|
99
101
|
private _requirements;
|
|
100
102
|
latestVersion$: Observable<string>;
|
|
101
|
-
constructor(_calculationsBaseUrl: string, _orchestratorBaseUrl: string, http: HttpClient);
|
|
103
|
+
constructor(_calculationsBaseUrl: string, _orchestratorBaseUrl: string, http: HttpClient, commonService: HeCommonService);
|
|
102
104
|
private init;
|
|
103
105
|
private loadModels;
|
|
104
106
|
private get models$();
|
package/esm2022/common/utils.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import get from 'lodash.get';
|
|
2
2
|
import { SchemaType } from '@hestia-earth/schema';
|
|
3
3
|
export const gitHome = 'https://gitlab.com/hestia-earth';
|
|
4
|
-
export const gitRawBaseUrl = 'https://gl.githack.com/hestia-earth';
|
|
5
4
|
export const gitBranch = () => (['dev', 'staging'].some(env => baseUrl().includes(env)) ? 'develop' : 'master');
|
|
6
5
|
export const isChrome = () => window.navigator.userAgent.includes('Chrome');
|
|
7
6
|
export const baseUrl = () => window.location.origin?.includes('localhost')
|
|
@@ -9,6 +8,7 @@ export const baseUrl = () => window.location.origin?.includes('localhost')
|
|
|
9
8
|
: window.location.origin?.includes('hestia.earth')
|
|
10
9
|
? window.location.origin
|
|
11
10
|
: 'https://www.hestia.earth';
|
|
11
|
+
export const baseApiUrl = () => baseUrl().replace('www', 'api');
|
|
12
12
|
export const isExternal = () => baseUrl() !== window.location.origin;
|
|
13
13
|
const parseErrorStatus = (error) => (error?.statusText || '').toLowerCase().replace(/\s/g, '-');
|
|
14
14
|
const parseErrorMessage = (error) => get(error, 'error.error', get(error, 'error.message', get(error, 'error', get(error, 'message', error))));
|
|
@@ -104,6 +104,7 @@ export var Template;
|
|
|
104
104
|
Template["feature"] = "feature";
|
|
105
105
|
})(Template || (Template = {}));
|
|
106
106
|
export const reportIssueUrl = (repository, template) => `${gitHome}/${repository}/-/issues/new${template ? `?issuable_template=${template}` : null}`;
|
|
107
|
+
export const changelogUrl = (repository) => `${gitHome}/${repository}/-/blob/master/CHANGELOG.md`;
|
|
107
108
|
export const contactUsEmail = 'community@hestia.earth';
|
|
108
109
|
export const externalLink = (href, text) => `<a href="${href}" target="_blank">${text}</a>`;
|
|
109
110
|
export const glossaryLink = (text) => externalLink(`${baseUrl()}/glossary`, text);
|
|
@@ -112,4 +113,8 @@ export const schemaLink = (type, title = type) => `<a href="${baseUrl()}/schema/
|
|
|
112
113
|
export const code = (text) => `<code>${text}</code>`;
|
|
113
114
|
export const contactUsLink = (text = 'contact us') => `<a href="mailto:${contactUsEmail}">${text}</a>`;
|
|
114
115
|
export const reportIssueLink = (repository, template, text = 'here') => externalLink(reportIssueUrl(repository, template), text);
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcscUNBQXFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFaEgsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDM0MsQ0FBQyxDQUFDLDhCQUE4QjtJQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNsRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQ3hCLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztBQUVqQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssTUFBTSxDQUFD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T05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIFNjaGVtYVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5cbmV4cG9ydCBjb25zdCBnaXRIb21lID0gJ2h0dHBzOi8vZ2l0bGFiLmNvbS9oZXN0aWEtZWFydGgnO1xuZXhwb3J0IGNvbnN0IGdpdFJhd0Jhc2VVcmwgPSAnaHR0cHM6Ly9nbC5naXRoYWNrLmNvbS9oZXN0aWEtZWFydGgnO1xuZXhwb3J0IGNvbnN0IGdpdEJyYW5jaCA9ICgpID0+IChbJ2RldicsICdzdGFnaW5nJ10uc29tZShlbnYgPT4gYmFzZVVybCgpLmluY2x1ZGVzKGVudikpID8gJ2RldmVsb3AnIDogJ21hc3RlcicpO1xuXG5leHBvcnQgY29uc3QgaXNDaHJvbWUgPSAoKSA9PiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygnQ2hyb21lJyk7XG5cbmV4cG9ydCBjb25zdCBiYXNlVXJsID0gKCkgPT5cbiAgd2luZG93LmxvY2F0aW9uLm9yaWdpbj8uaW5jbHVkZXMoJ2xvY2FsaG9zdCcpXG4gICAgPyAnaHR0cHM6Ly93d3ctZGV2Lmhlc3RpYS5lYXJ0aCdcbiAgICA6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4/LmluY2x1ZGVzKCdoZXN0aWEuZWFydGgnKVxuICAgID8gd2luZG93LmxvY2F0aW9uLm9yaWdpblxuICAgIDogJ2h0dHBzOi8vd3d3Lmhlc3RpYS5lYXJ0aCc7XG5cbmV4cG9ydCBjb25zdCBpc0V4dGVybmFsID0gKCkgPT4gYmFzZVVybCgpICE9PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuXG5jb25zdCBwYXJzZUVycm9yU3RhdHVzID0gKGVycm9yOiBhbnkpID0+IChlcnJvcj8uc3RhdHVzVGV4dCB8fCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMvZywgJy0nKTtcblxuY29uc3QgcGFyc2VFcnJvck1lc3NhZ2UgPSAoZXJyb3I6IGFueSkgPT5cbiAgZ2V0KGVycm9yLCAnZXJyb3IuZXJyb3InLCBnZXQoZXJyb3IsICdlcnJvci5tZXNzYWdlJywgZ2V0KGVycm9yLCAnZXJyb3InLCBnZXQoZXJyb3IsICdtZXNzYWdlJywgZXJyb3IpKSkpO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQVBJRXJyb3IgPSAoZXJyb3I6IGFueSkgPT4ge1xuICB0cnkge1xuICAgIGVycm9yID0gcGFyc2VFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpZ25vcmUgZXJyb3JcbiAgfVxuICB0aHJvdyBlcnJvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBlcnJvclRleHQgPSAoZXJyb3I6IGFueSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGNvbnN0IGVyciA9IHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgcmV0dXJuIHBhcnNlRXJyb3JTdGF0dXMoZXJyKSB8fCBlcnI7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyUGFyYW1zID0gKG9iajogYW55KSA9PiB7XG4gIGNvbnN0IHJlczoge1xuICAgIFt4OiBzdHJpbmddOiBzdHJpbmc7XG4gIH0gPSB7fTtcbiAgT2JqZWN0LmtleXMob2JqKVxuICAgIC5zb3J0KClcbiAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmVzW2tleV0gPSBgJHt2YWx1ZX1gO1xuICAgICAgfVxuICAgIH0pO1xuICByZXR1cm4gcmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IHdhaXRGb3IgPSAodmFyaWFibGU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+XG4gIGdldCh3aW5kb3csIHZhcmlhYmxlLCBmYWxzZSkgPyBjYWxsYmFjaygpIDogc2V0VGltZW91dCgoKSA9PiB3YWl0Rm9yKHZhcmlhYmxlLCBjYWxsYmFjayksIDEwMCk7XG5cbmV4cG9ydCBjb25zdCBib3R0b20gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG5cbmV4cG9ydCBjb25zdCBpc1Njcm9sbGVkQmVsb3cgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IChlbGVtZW50ID8gd2luZG93LnNjcm9sbFkgPiBib3R0b20oZWxlbWVudCkgOiBmYWxzZSk7XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb0VsID0gKGlkOiBzdHJpbmcsIHJldHJpZXMgPSAwKSA9PiB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICBzZXRUaW1lb3V0KCgpID0+IChlbCA/IGVsLnNjcm9sbEludG9WaWV3KCkgOiByZXRyaWVzIDwgMTAgPyBzY3JvbGxUb0VsKGlkLCByZXRyaWVzICsgMSkgOiBudWxsKSwgMTAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbmV4cG9ydCBjb25zdCBzYWZlSlNPTlBhcnNlID0gPFQ+KHZhbHVlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IGFueSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gKEpTT04ucGFyc2UodmFsdWUpIGFzIFQpIDogdmFsdWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzYWZlSlNPTlN0cmluZ2lmeSA9ICh2YWx1ZTogc3RyaW5nKSA9PiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcblxuZXhwb3J0IGNvbnN0IGFycmF5VmFsdWUgPSAodmFsdWVzOiBhbnlbXSwgaXNBdmVyYWdlOiBib29sZWFuKSA9PlxuICAodmFsdWVzIHx8IFtdKS5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycikgPT4gcHJldiArIHBhcnNlRmxvYXQoYCR7Y3Vycn1gKSwgMCkgLyAoaXNBdmVyYWdlID8gdmFsdWVzLmxlbmd0aCA6IDEpO1xuXG5leHBvcnQgY29uc3QgZWxsaXBzaXMgPSAodGV4dCA9ICcnLCBtYXhsZW5ndGggPSAyMCkgPT5cbiAgdGV4dC5sZW5ndGggPiBtYXhsZW5ndGggPyBgJHt0ZXh0LnN1YnN0cmluZygwLCBtYXhsZW5ndGgpfS4uLmAgOiB0ZXh0O1xuXG5jb25zdCBtYXBzUXVlcnkgPSAnaHR0cDovL21hcHMuZ29vZ2xlLmNvbS8/cT0nO1xuXG5leHBvcnQgY29uc3QgbWFwc1VybCA9IChsb2NhdGlvbj86IHsgbGF0PzogbnVtYmVyOyBsbmc/OiBudW1iZXI7IG5hbWU/OiBzdHJpbmcgfSkgPT5cbiAgbG9jYXRpb25cbiAgICA/IGxvY2F0aW9uLmxhdCAmJiBsb2NhdGlvbi5sbmdcbiAgICAgID8gYCR7bWFwc1F1ZXJ5fSR7bG9jYXRpb24ubGF0fSwke2xvY2F0aW9uLmxuZ31gXG4gICAgICA6IGxvY2F0aW9uLm5hbWVcbiAgICAgID8gYCR7bWFwc1F1ZXJ5fSR7ZW5jb2RlVVJJKGxvY2F0aW9uLm5hbWUpfWBcbiAgICAgIDogdW5kZWZpbmVkXG4gICAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IG5vZGVEZWZhdWx0TGFiZWw6IHtcbiAgW3R5cGUgaW4gU2NoZW1hVHlwZV0/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG59ID0ge1xuICBbU2NoZW1hVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogKHsgbmFtZSwgY291bnRyeSwgZW5kRGF0ZSwgcHJvZHVjdCB9OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkgPT5cbiAgICBuYW1lXG4gICAgICA/IG5hbWUucmVwbGFjZShgJHtwcm9kdWN0Py50ZXJtPy5uYW1lfSwgYCwgJycpXG4gICAgICA6IFtwcm9kdWN0Py50ZXJtPy5uYW1lLCBjb3VudHJ5Py5uYW1lLCBlbmREYXRlXS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKSxcbiAgW1NjaGVtYVR5cGUuU2l0ZV06ICh7IG5hbWUsIGRlc2NyaXB0aW9uIH06IElTaXRlSlNPTkxEKSA9PiBuYW1lIHx8IGRlc2NyaXB0aW9uISxcbiAgW1NjaGVtYVR5cGUuVHJhbnNmb3JtYXRpb25dOiAoeyBuYW1lLCB0ZXJtIH06IGFueSkgPT4gbmFtZSB8fCB0ZXJtPy5uYW1lXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdExhYmVsID0gKG5vZGU/OiBhbnkpID0+XG4gIG5vZGVcbiAgICA/IChub2RlWydAdHlwZSddIGluIG5vZGVEZWZhdWx0TGFiZWwgPyBub2RlRGVmYXVsdExhYmVsW25vZGVbJ0B0eXBlJ11dKG5vZGUpIDogbm9kZS5uYW1lKSB8fCBub2RlWydAaWQnXSB8fCBub2RlLmlkXG4gICAgOiAnJztcblxuZXhwb3J0IGNvbnN0IHJlcGVhdCA9ICh0aW1lcyA9IDApID0+IEFycmF5LmZyb20oQXJyYXkodGltZXMpLCBNYXRoLnJhbmRvbSk7XG5cbmV4cG9ydCBjb25zdCBjb3B5T2JqZWN0ID0gKGRhdGE/OiBhbnkpID0+IChkYXRhID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSkgOiBudWxsKTtcblxuZXhwb3J0IGNvbnN0IGlzRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKTtcblxuZXhwb3J0IGNvbnN0IHR5cGVhaGVhZEZvY3VzID0gKGU6IEV2ZW50KSA9PiB7XG4gIGlmIChlLmJ1YmJsZXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgc2V0VGltZW91dCgoKSA9PiBlLnRhcmdldD8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpLCAwKTtcbn07XG5cbmV4cG9ydCBlbnVtIFJlcG9zaXRvcnkge1xuICBnbG9zc2FyeSA9ICdoZXN0aWEtZ2xvc3NhcnknLFxuICBtb2RlbHMgPSAnaGVzdGlhLWVuZ2luZS1tb2RlbHMnLFxuICBvcmNoZXN0cmF0b3IgPSAnaGVzdGlhLWVuZ2luZS1vcmNoZXN0cmF0b3InLFxuICBhZ2dyZWdhdGlvbiA9ICdoZXN0aWEtYWdncmVnYXRpb24tZW5naW5lJyxcbiAgY29tbXVuaXR5ID0gJ2hlc3RpYS1jb21tdW5pdHktZWRpdGlvbicsXG4gIHBvb3JlbmVtZWNrID0gJ2hlc3RpYS1jb252ZXJ0LXBvb3JlLW5lbWVjZWsnLFxuICBmcm9udGVuZCA9ICdoZXN0aWEtZnJvbnQtZW5kJyxcbiAgc2NoZW1hID0gJ2hlc3RpYS1zY2hlbWEnXG59XG5cbmV4cG9ydCBlbnVtIFRlbXBsYXRlIHtcbiAgYnVnID0gJ2J1ZycsXG4gIGZlYXR1cmUgPSAnZmVhdHVyZSdcbn1cblxuZXhwb3J0IGNvbnN0IHJlcG9ydElzc3VlVXJsID0gKHJlcG9zaXRvcnk6IFJlcG9zaXRvcnksIHRlbXBsYXRlPzogVGVtcGxhdGUpID0+XG4gIGAke2dpdEhvbWV9LyR7cmVwb3NpdG9yeX0vLS9pc3N1ZXMvbmV3JHt0ZW1wbGF0ZSA/IGA/aXNzdWFibGVfdGVtcGxhdGU9JHt0ZW1wbGF0ZX1gIDogbnVsbH1gO1xuXG5leHBvcnQgY29uc3QgY29udGFjdFVzRW1haWwgPSAnY29tbXVuaXR5QGhlc3RpYS5lYXJ0aCc7XG5leHBvcnQgY29uc3QgZXh0ZXJuYWxMaW5rID0gKGhyZWY6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBgPGEgaHJlZj1cIiR7aHJlZn1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RleHR9PC9hPmA7XG5leHBvcnQgY29uc3QgZ2xvc3NhcnlMaW5rID0gKHRleHQ6IHN0cmluZykgPT4gZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3NhcnlgLCB0ZXh0KTtcbmV4cG9ydCBjb25zdCBub2RlTGluayA9ICh7ICdAdHlwZSc6IHR5cGUsICdAaWQnOiBpZCwgbmFtZSB9OiB7ICdAdHlwZSc6IHN0cmluZzsgJ0BpZCc6IHN0cmluZzsgbmFtZT86IHN0cmluZyB9KSA9PlxuICB0eXBlICYmIGlkID8gYDxhIGhyZWY9XCIvJHt0eXBlLnRvTG93ZXJDYXNlKCl9LyR7aWR9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHtuYW1lIHx8IGlkfTwvYT5gIDogbnVsbDtcbmV4cG9ydCBjb25zdCBzY2hlbWFMaW5rID0gKHR5cGU6IHN0cmluZywgdGl0bGUgPSB0eXBlKSA9PlxuICBgPGEgaHJlZj1cIiR7YmFzZVVybCgpfS9zY2hlbWEvJHt0eXBlfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7dGl0bGV9PC9hPmA7XG5leHBvcnQgY29uc3QgY29kZSA9ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA9PiBgPGNvZGU+JHt0ZXh0fTwvY29kZT5gO1xuZXhwb3J0IGNvbnN0IGNvbnRhY3RVc0xpbmsgPSAodGV4dCA9ICdjb250YWN0IHVzJykgPT4gYDxhIGhyZWY9XCJtYWlsdG86JHtjb250YWN0VXNFbWFpbH1cIj4ke3RleHR9PC9hPmA7XG5leHBvcnQgY29uc3QgcmVwb3J0SXNzdWVMaW5rID0gKHJlcG9zaXRvcnk6IFJlcG9zaXRvcnksIHRlbXBsYXRlPzogVGVtcGxhdGUsIHRleHQgPSAnaGVyZScpID0+XG4gIGV4dGVybmFsTGluayhyZXBvcnRJc3N1ZVVybChyZXBvc2l0b3J5LCB0ZW1wbGF0ZSksIHRleHQpO1xuIl19
|
|
116
|
+
/**
|
|
117
|
+
* Url to fetch raw content from Gitlab, bypassing CORS issues.
|
|
118
|
+
*/
|
|
119
|
+
export const gitlabRawUrl = ({ repository, path, apiUrl, branch }) => `${apiUrl || baseApiUrl()}/gitlab/raw?repository=${repository}&branch=${branch || gitBranch()}&path=${encodeURIComponent(path)}`;
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVoSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMzQyxDQUFDLENBQUMsOEJBQThCO0lBQ2hDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU07UUFDeEIsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRWhFLE1BQU0sQ0FBQyxN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QUFFLEVBQUUsQ0FDNUYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFxQjNEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQW9CLEVBQUUsRUFBRSxDQUNyRixHQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUUsMEJBQTBCLFVBQVUsV0FDM0QsTUFBTSxJQUFJLFNBQVMsRUFDckIsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCB7IElTaXRlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgU2NoZW1hVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuZXhwb3J0IGNvbnN0IGdpdEhvbWUgPSAnaHR0cHM6Ly9naXRsYWIuY29tL2hlc3RpYS1lYXJ0aCc7XG5leHBvcnQgY29uc3QgZ2l0QnJhbmNoID0gKCkgPT4gKFsnZGV2JywgJ3N0YWdpbmcnXS5zb21lKGVudiA9PiBiYXNlVXJsKCkuaW5jbHVkZXMoZW52KSkgPyAnZGV2ZWxvcCcgOiAnbWFzdGVyJyk7XG5cbmV4cG9ydCBjb25zdCBpc0Nocm9tZSA9ICgpID0+IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdDaHJvbWUnKTtcblxuZXhwb3J0IGNvbnN0IGJhc2VVcmwgPSAoKSA9PlxuICB3aW5kb3cubG9jYXRpb24ub3JpZ2luPy5pbmNsdWRlcygnbG9jYWxob3N0JylcbiAgICA/ICdodHRwczovL3d3dy1kZXYuaGVzdGlhLmVhcnRoJ1xuICAgIDogd2luZG93LmxvY2F0aW9uLm9yaWdpbj8uaW5jbHVkZXMoJ2hlc3RpYS5lYXJ0aCcpXG4gICAgPyB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgOiAnaHR0cHM6Ly93d3cuaGVzdGlhLmVhcnRoJztcblxuZXhwb3J0IGNvbnN0IGJhc2VBcGlVcmwgPSAoKSA9PiBiYXNlVXJsKCkucmVwbGFjZSgnd3d3JywgJ2FwaScpO1xuXG5leHBvcnQgY29uc3QgaXNFeHRlcm5hbCA9ICgpID0+IGJhc2VVcmwoKSAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblxuY29uc3QgcGFyc2VFcnJvclN0YXR1cyA9IChlcnJvcjogYW55KSA9PiAoZXJyb3I/LnN0YXR1c1RleHQgfHwgJycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICctJyk7XG5cbmNvbnN0IHBhcnNlRXJyb3JNZXNzYWdlID0gKGVycm9yOiBhbnkpID0+XG4gIGdldChlcnJvciwgJ2Vycm9yLmVycm9yJywgZ2V0KGVycm9yLCAnZXJyb3IubWVzc2FnZScsIGdldChlcnJvciwgJ2Vycm9yJywgZ2V0KGVycm9yLCAnbWVzc2FnZScsIGVycm9yKSkpKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFQSUVycm9yID0gKGVycm9yOiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBlcnJvciA9IHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gaWdub3JlIGVycm9yXG4gIH1cbiAgdGhyb3cgZXJyb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JUZXh0ID0gKGVycm9yOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICBjb25zdCBlcnIgPSBwYXJzZUVycm9yTWVzc2FnZShlcnJvcik7XG4gIHJldHVybiBwYXJzZUVycm9yU3RhdHVzKGVycikgfHwgZXJyO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlclBhcmFtcyA9IChvYmo6IGFueSkgPT4ge1xuICBjb25zdCByZXM6IHtcbiAgICBbeDogc3RyaW5nXTogc3RyaW5nO1xuICB9ID0ge307XG4gIE9iamVjdC5rZXlzKG9iailcbiAgICAuc29ydCgpXG4gICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJlc1trZXldID0gYCR7dmFsdWV9YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yID0gKHZhcmlhYmxlOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PlxuICBnZXQod2luZG93LCB2YXJpYWJsZSwgZmFsc2UpID8gY2FsbGJhY2soKSA6IHNldFRpbWVvdXQoKCkgPT4gd2FpdEZvcih2YXJpYWJsZSwgY2FsbGJhY2spLCAxMDApO1xuXG5leHBvcnQgY29uc3QgYm90dG9tID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG5leHBvcnQgY29uc3QgaXNTY3JvbGxlZEJlbG93ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiAoZWxlbWVudCA/IHdpbmRvdy5zY3JvbGxZID4gYm90dG9tKGVsZW1lbnQpIDogZmFsc2UpO1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9FbCA9IChpZDogc3RyaW5nLCByZXRyaWVzID0gMCkgPT4ge1xuICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgc2V0VGltZW91dCgoKSA9PiAoZWwgPyBlbC5zY3JvbGxJbnRvVmlldygpIDogcmV0cmllcyA8IDEwID8gc2Nyb2xsVG9FbChpZCwgcmV0cmllcyArIDEpIDogbnVsbCksIDEwMCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsVG9wID0gKCkgPT4gd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05QYXJzZSA9IDxUPih2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IChKU09OLnBhcnNlKHZhbHVlKSBhcyBUKSA6IHZhbHVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05TdHJpbmdpZnkgPSAodmFsdWU6IHN0cmluZykgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG5cbmV4cG9ydCBjb25zdCBhcnJheVZhbHVlID0gKHZhbHVlczogYW55W10sIGlzQXZlcmFnZTogYm9vbGVhbikgPT5cbiAgKHZhbHVlcyB8fCBbXSkucmVkdWNlKChwcmV2OiBudW1iZXIsIGN1cnIpID0+IHByZXYgKyBwYXJzZUZsb2F0KGAke2N1cnJ9YCksIDApIC8gKGlzQXZlcmFnZSA/IHZhbHVlcy5sZW5ndGggOiAxKTtcblxuZXhwb3J0IGNvbnN0IGVsbGlwc2lzID0gKHRleHQgPSAnJywgbWF4bGVuZ3RoID0gMjApID0+XG4gIHRleHQubGVuZ3RoID4gbWF4bGVuZ3RoID8gYCR7dGV4dC5zdWJzdHJpbmcoMCwgbWF4bGVuZ3RoKX0uLi5gIDogdGV4dDtcblxuY29uc3QgbWFwc1F1ZXJ5ID0gJ2h0dHA6Ly9tYXBzLmdvb2dsZS5jb20vP3E9JztcblxuZXhwb3J0IGNvbnN0IG1hcHNVcmwgPSAobG9jYXRpb24/OiB7IGxhdD86IG51bWJlcjsgbG5nPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gIGxvY2F0aW9uXG4gICAgPyBsb2NhdGlvbi5sYXQgJiYgbG9jYXRpb24ubG5nXG4gICAgICA/IGAke21hcHNRdWVyeX0ke2xvY2F0aW9uLmxhdH0sJHtsb2NhdGlvbi5sbmd9YFxuICAgICAgOiBsb2NhdGlvbi5uYW1lXG4gICAgICA/IGAke21hcHNRdWVyeX0ke2VuY29kZVVSSShsb2NhdGlvbi5uYW1lKX1gXG4gICAgICA6IHVuZGVmaW5lZFxuICAgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBub2RlRGVmYXVsdExhYmVsOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGVdPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xufSA9IHtcbiAgW1NjaGVtYVR5cGUuSW1wYWN0QXNzZXNzbWVudF06ICh7IG5hbWUsIGNvdW50cnksIGVuZERhdGUsIHByb2R1Y3QgfTogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gICAgbmFtZVxuICAgICAgPyBuYW1lLnJlcGxhY2UoYCR7cHJvZHVjdD8udGVybT8ubmFtZX0sIGAsICcnKVxuICAgICAgOiBbcHJvZHVjdD8udGVybT8ubmFtZSwgY291bnRyeT8ubmFtZSwgZW5kRGF0ZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyksXG4gIFtTY2hlbWFUeXBlLlNpdGVdOiAoeyBuYW1lLCBkZXNjcmlwdGlvbiB9OiBJU2l0ZUpTT05MRCkgPT4gbmFtZSB8fCBkZXNjcmlwdGlvbiEsXG4gIFtTY2hlbWFUeXBlLlRyYW5zZm9ybWF0aW9uXTogKHsgbmFtZSwgdGVybSB9OiBhbnkpID0+IG5hbWUgfHwgdGVybT8ubmFtZVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMYWJlbCA9IChub2RlPzogYW55KSA9PlxuICBub2RlXG4gICAgPyAobm9kZVsnQHR5cGUnXSBpbiBub2RlRGVmYXVsdExhYmVsID8gbm9kZURlZmF1bHRMYWJlbFtub2RlWydAdHlwZSddXShub2RlKSA6IG5vZGUubmFtZSkgfHwgbm9kZVsnQGlkJ10gfHwgbm9kZS5pZFxuICAgIDogJyc7XG5cbmV4cG9ydCBjb25zdCByZXBlYXQgPSAodGltZXMgPSAwKSA9PiBBcnJheS5mcm9tKEFycmF5KHRpbWVzKSwgTWF0aC5yYW5kb20pO1xuXG5leHBvcnQgY29uc3QgY29weU9iamVjdCA9IChkYXRhPzogYW55KSA9PiAoZGF0YSA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpIDogbnVsbCk7XG5cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKGE6IGFueSwgYjogYW55KSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYik7XG5cbmV4cG9ydCBjb25zdCB0eXBlYWhlYWRGb2N1cyA9IChlOiBFdmVudCkgPT4ge1xuICBpZiAoZS5idWJibGVzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIHNldFRpbWVvdXQoKCkgPT4gZS50YXJnZXQ/LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKSwgMCk7XG59O1xuXG5leHBvcnQgZW51bSBSZXBvc2l0b3J5IHtcbiAgZ2xvc3NhcnkgPSAnaGVzdGlhLWdsb3NzYXJ5JyxcbiAgbW9kZWxzID0gJ2hlc3RpYS1lbmdpbmUtbW9kZWxzJyxcbiAgb3JjaGVzdHJhdG9yID0gJ2hlc3RpYS1lbmdpbmUtb3JjaGVzdHJhdG9yJyxcbiAgYWdncmVnYXRpb24gPSAnaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZScsXG4gIGNvbW11bml0eSA9ICdoZXN0aWEtY29tbXVuaXR5LWVkaXRpb24nLFxuICBwb29yZW5lbWVjayA9ICdoZXN0aWEtY29udmVydC1wb29yZS1uZW1lY2VrJyxcbiAgZnJvbnRlbmQgPSAnaGVzdGlhLWZyb250LWVuZCcsXG4gIHNjaGVtYSA9ICdoZXN0aWEtc2NoZW1hJ1xufVxuXG5leHBvcnQgZW51bSBUZW1wbGF0ZSB7XG4gIGJ1ZyA9ICdidWcnLFxuICBmZWF0dXJlID0gJ2ZlYXR1cmUnXG59XG5cbmV4cG9ydCBjb25zdCByZXBvcnRJc3N1ZVVybCA9IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5LCB0ZW1wbGF0ZT86IFRlbXBsYXRlKSA9PlxuICBgJHtnaXRIb21lfS8ke3JlcG9zaXRvcnl9Ly0vaXNzdWVzL25ldyR7dGVtcGxhdGUgPyBgP2lzc3VhYmxlX3RlbXBsYXRlPSR7dGVtcGxhdGV9YCA6IG51bGx9YDtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZWxvZ1VybCA9IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5KSA9PiBgJHtnaXRIb21lfS8ke3JlcG9zaXRvcnl9Ly0vYmxvYi9tYXN0ZXIvQ0hBTkdFTE9HLm1kYDtcblxuZXhwb3J0IGNvbnN0IGNvbnRhY3RVc0VtYWlsID0gJ2NvbW11bml0eUBoZXN0aWEuZWFydGgnO1xuZXhwb3J0IGNvbnN0IGV4dGVybmFsTGluayA9IChocmVmOiBzdHJpbmcsIHRleHQ6IHN0cmluZykgPT4gYDxhIGhyZWY9XCIke2hyZWZ9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHt0ZXh0fTwvYT5gO1xuZXhwb3J0IGNvbnN0IGdsb3NzYXJ5TGluayA9ICh0ZXh0OiBzdHJpbmcpID0+IGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5YCwgdGV4dCk7XG5leHBvcnQgY29uc3Qgbm9kZUxpbmsgPSAoeyAnQHR5cGUnOiB0eXBlLCAnQGlkJzogaWQsIG5hbWUgfTogeyAnQHR5cGUnOiBzdHJpbmc7ICdAaWQnOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfSkgPT5cbiAgdHlwZSAmJiBpZCA/IGA8YSBocmVmPVwiLyR7dHlwZS50b0xvd2VyQ2FzZSgpfS8ke2lkfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7bmFtZSB8fCBpZH08L2E+YCA6IG51bGw7XG5leHBvcnQgY29uc3Qgc2NoZW1hTGluayA9ICh0eXBlOiBzdHJpbmcsIHRpdGxlID0gdHlwZSkgPT5cbiAgYDxhIGhyZWY9XCIke2Jhc2VVcmwoKX0vc2NoZW1hLyR7dHlwZX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RpdGxlfTwvYT5gO1xuZXhwb3J0IGNvbnN0IGNvZGUgPSAodGV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikgPT4gYDxjb2RlPiR7dGV4dH08L2NvZGU+YDtcbmV4cG9ydCBjb25zdCBjb250YWN0VXNMaW5rID0gKHRleHQgPSAnY29udGFjdCB1cycpID0+IGA8YSBocmVmPVwibWFpbHRvOiR7Y29udGFjdFVzRW1haWx9XCI+JHt0ZXh0fTwvYT5gO1xuZXhwb3J0IGNvbnN0IHJlcG9ydElzc3VlTGluayA9IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5LCB0ZW1wbGF0ZT86IFRlbXBsYXRlLCB0ZXh0ID0gJ2hlcmUnKSA9PlxuICBleHRlcm5hbExpbmsocmVwb3J0SXNzdWVVcmwocmVwb3NpdG9yeSwgdGVtcGxhdGUpLCB0ZXh0KTtcblxuaW50ZXJmYWNlIElHaXRsYWJSYXdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgd2hlcmUgdGhlIGZpbGUgaXMgbG9jYXRlZC5cbiAgICovXG4gIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgZmlsZSwgZnJvbSB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeS5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBiYXNlIHVybCBvZiB0aGUgSGVzdGlhIEFQSS5cbiAgICovXG4gIGFwaVVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBicmFuY2gsIHVzaW5nIHRoZSBkZWZhdWx0IGJyYW5jaCBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuXG4gICAqL1xuICBicmFuY2g/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXJsIHRvIGZldGNoIHJhdyBjb250ZW50IGZyb20gR2l0bGFiLCBieXBhc3NpbmcgQ09SUyBpc3N1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBnaXRsYWJSYXdVcmwgPSAoeyByZXBvc2l0b3J5LCBwYXRoLCBhcGlVcmwsIGJyYW5jaCB9OiBJR2l0bGFiUmF3UGFyYW1zKSA9PlxuICBgJHthcGlVcmwgfHwgYmFzZUFwaVVybCgpfS9naXRsYWIvcmF3P3JlcG9zaXRvcnk9JHtyZXBvc2l0b3J5fSZicmFuY2g9JHtcbiAgICBicmFuY2ggfHwgZ2l0QnJhbmNoKClcbiAgfSZwYXRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhdGgpfWA7XG4iXX0=
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { of, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { catchError, map, take } from 'rxjs/operators';
|
|
4
|
-
import { gitBranch, gitHome,
|
|
4
|
+
import { gitBranch, gitHome, gitlabRawUrl, Repository } from '../common/utils';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/common/http";
|
|
7
7
|
import * as i2 from "../node/node.service";
|
|
8
|
-
|
|
9
|
-
const
|
|
8
|
+
import * as i3 from "../common/common.service";
|
|
9
|
+
const gitUrl = () => `${gitHome}/${Repository.aggregation}/-/blob/${gitBranch()}`;
|
|
10
10
|
export const lookups = Object.freeze({
|
|
11
11
|
cropYield: 'region-crop-cropGroupingFaostatProduction-yield',
|
|
12
12
|
cropGroupingColumn: 'cropGroupingFaostatProduction'
|
|
13
13
|
});
|
|
14
14
|
export class HeAggregationEngineService {
|
|
15
|
-
constructor(http, nodeService) {
|
|
15
|
+
constructor(http, nodeService, commonService) {
|
|
16
16
|
this.http = http;
|
|
17
17
|
this.nodeService = nodeService;
|
|
18
|
+
this.commonService = commonService;
|
|
18
19
|
this.modelsLoading = false;
|
|
19
20
|
this.modelsLoaded = false;
|
|
20
21
|
this._models = new ReplaySubject(1);
|
|
@@ -25,7 +26,13 @@ export class HeAggregationEngineService {
|
|
|
25
26
|
}
|
|
26
27
|
loadModels() {
|
|
27
28
|
this.modelsLoading = true;
|
|
28
|
-
return this.http
|
|
29
|
+
return this.http
|
|
30
|
+
.get(gitlabRawUrl({
|
|
31
|
+
apiUrl: this.commonService.apiBaseUrl,
|
|
32
|
+
repository: Repository.aggregation,
|
|
33
|
+
path: 'model-links.json'
|
|
34
|
+
}))
|
|
35
|
+
.pipe(map(data => JSON.parse(data)), catchError(() => of({ links: [] })), map(({ links }) => {
|
|
29
36
|
this._models.next(links.map(({ path: modelPath, docPath, ...link }) => ({
|
|
30
37
|
...link,
|
|
31
38
|
path: `${gitUrl()}/${modelPath}`,
|
|
@@ -48,7 +55,7 @@ export class HeAggregationEngineService {
|
|
|
48
55
|
model(model) {
|
|
49
56
|
return this.model$(model).pipe(take(1)).toPromise();
|
|
50
57
|
}
|
|
51
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1.HttpClient }, { token: i2.HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1.HttpClient }, { token: i2.HeNodeService }, { token: i3.HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
52
59
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: HeAggregationEngineService, providedIn: 'root' }); }
|
|
53
60
|
}
|
|
54
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: HeAggregationEngineService, decorators: [{
|
|
@@ -56,5 +63,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
|
|
|
56
63
|
args: [{
|
|
57
64
|
providedIn: 'root'
|
|
58
65
|
}]
|
|
59
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeNodeService }]; } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeNodeService }, { type: i3.HeCommonService }]; } });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2FnZ3JlZ2F0aW9uLWVuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUUvRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sSUFBSSxVQUFVLENBQUMsV0FBVyxXQUFXLFNBQVMsRUFBRSxFQUFFLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkMsU0FBUyxFQUFFLGlEQUFpRDtJQUM1RCxrQkFBa0IsRUFBRSwrQkFBK0I7Q0FDcEQsQ0FBQyxDQUFDO0FBdUJILE1BQU0sT0FBTywwQkFBMEI7SUFLckMsWUFDWSxJQUFnQixFQUNoQixXQUEwQixFQUMxQixhQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQVBsQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixZQUFPLEdBQUcsSUFBSSxhQUFhLENBQXNCLENBQUMsQ0FBQyxDQUFDO1FBTzFELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBSTtRQUNoQixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUNGLFlBQVksQ0FBQztZQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVU7WUFDckMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ2xDLElBQUksRUFBRSxrQkFBa0I7U0FDekIsQ0FBQyxDQUNIO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBVyxDQUEyQixDQUFDLEVBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUE0QixDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELEdBQUcsSUFBSTtnQkFDUCxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLE9BQU8sRUFBRTthQUNsQyxDQUFDLENBQUMsQ0FDSixDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELElBQVksT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWlDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFpQztRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7OEdBN0RVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzJGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBIZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdpdEJyYW5jaCwgZ2l0SG9tZSwgZ2l0bGFiUmF3VXJsLCBSZXBvc2l0b3J5IH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgZ2l0VXJsID0gKCkgPT4gYCR7Z2l0SG9tZX0vJHtSZXBvc2l0b3J5LmFnZ3JlZ2F0aW9ufS8tL2Jsb2IvJHtnaXRCcmFuY2goKX1gO1xuXG5leHBvcnQgY29uc3QgbG9va3VwcyA9IE9iamVjdC5mcmVlemUoe1xuICBjcm9wWWllbGQ6ICdyZWdpb24tY3JvcC1jcm9wR3JvdXBpbmdGYW9zdGF0UHJvZHVjdGlvbi15aWVsZCcsXG4gIGNyb3BHcm91cGluZ0NvbHVtbjogJ2Nyb3BHcm91cGluZ0Zhb3N0YXRQcm9kdWN0aW9uJ1xufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFnZ3JlZ2F0aW9uTW9kZWwge1xuICB0eXBlOiBOb2RlVHlwZTtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGltcGxlbWVudGF0aW9uIChjb2RlKSBvZiB0aGUgbW9kZWwuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2RlbC5cbiAgICovXG4gIGRvY1BhdGg6IHN0cmluZztcbiAgZGF0YVBhdGg6IHN0cmluZztcbiAgJ0BpZCc/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJQWdncmVnYXRpb25Nb2RlbExpbmtzIHtcbiAgbGlua3M6IElBZ2dyZWdhdGlvbk1vZGVsW107XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlQWdncmVnYXRpb25FbmdpbmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgbW9kZWxzTG9hZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX21vZGVscyA9IG5ldyBSZXBsYXlTdWJqZWN0PElBZ2dyZWdhdGlvbk1vZGVsW10+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBub2RlU2VydmljZTogSGVOb2RlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29tbW9uU2VydmljZTogSGVDb21tb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZE1vZGVscygpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWxzKCkge1xuICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxJQWdncmVnYXRpb25Nb2RlbExpbmtzPihcbiAgICAgICAgZ2l0bGFiUmF3VXJsKHtcbiAgICAgICAgICBhcGlVcmw6IHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLFxuICAgICAgICAgIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnkuYWdncmVnYXRpb24sXG4gICAgICAgICAgcGF0aDogJ21vZGVsLWxpbmtzLmpzb24nXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGRhdGEgPT4gSlNPTi5wYXJzZShkYXRhIGFzIGFueSkgYXMgSUFnZ3JlZ2F0aW9uTW9kZWxMaW5rcyksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBsaW5rczogW10gfSBhcyBJQWdncmVnYXRpb25Nb2RlbExpbmtzKSksXG4gICAgICAgIG1hcCgoeyBsaW5rcyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5fbW9kZWxzLm5leHQoXG4gICAgICAgICAgICBsaW5rcy5tYXAoKHsgcGF0aDogbW9kZWxQYXRoLCBkb2NQYXRoLCAuLi5saW5rIH0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmxpbmssXG4gICAgICAgICAgICAgIHBhdGg6IGAke2dpdFVybCgpfS8ke21vZGVsUGF0aH1gLFxuICAgICAgICAgICAgICBkb2NQYXRoOiBgJHtnaXRVcmwoKX0vJHtkb2NQYXRofWBcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5tb2RlbHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5tb2RlbHNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBsaW5rcztcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBtb2RlbHMkKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsc0xvYWRpbmcgfHwgdGhpcy5tb2RlbHNMb2FkZWQgPyB0aGlzLl9tb2RlbHMuYXNPYnNlcnZhYmxlKCkgOiB0aGlzLmxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGVsJChtb2RlbDogUGFydGlhbDxJQWdncmVnYXRpb25Nb2RlbD4pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHMkLnBpcGUoXG4gICAgICBtYXAobW9kZWxzID0+IG1vZGVscy5maW5kKG0gPT4gT2JqZWN0LmVudHJpZXMobW9kZWwpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0+IHZhbHVlID09PSBtW2tleV0pKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1vZGVsKG1vZGVsOiBQYXJ0aWFsPElBZ2dyZWdhdGlvbk1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVsJChtb2RlbCkucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -4,7 +4,7 @@ import { filter, groupBy, mergeMap, reduce, toArray } from 'rxjs/operators';
|
|
|
4
4
|
import { NodeType, SchemaType } from '@hestia-earth/schema';
|
|
5
5
|
import { keyToLabel, unique } from '@hestia-earth/utils';
|
|
6
6
|
import { engineGitUrl } from '../engine.service';
|
|
7
|
-
import { baseUrl, gitBranch, gitHome } from '../../common/utils';
|
|
7
|
+
import { Repository, baseUrl, gitBranch, gitHome } from '../../common/utils';
|
|
8
8
|
import { pluralize } from '../../common/pluralize';
|
|
9
9
|
import { matchId, matchType } from '../../search/search.model';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
@@ -18,7 +18,7 @@ import * as i7 from "../../common/click-outside.directive";
|
|
|
18
18
|
import * as i8 from "../../node/node-link/node-link.component";
|
|
19
19
|
import * as i9 from "../../common/keys.pipe";
|
|
20
20
|
import * as i10 from "../../common/key-to-label.pipe";
|
|
21
|
-
const gitUrl = `${gitHome}
|
|
21
|
+
const gitUrl = `${gitHome}/${Repository.orchestrator}/-/blob/${gitBranch()}`;
|
|
22
22
|
const generalDocsUrl = `${gitUrl}/hestia_earth/orchestrator/config/README.md`;
|
|
23
23
|
const strategiesDocs = `${gitUrl}/hestia_earth/orchestrator/strategies`;
|
|
24
24
|
const schemaTypeKeys = Object.keys(SchemaType);
|
|
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
|
|
|
138
138
|
}], nodeType: [{
|
|
139
139
|
type: Input
|
|
140
140
|
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0L2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQWUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUlMLFlBQVksRUFFYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7QUFJL0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxPQUFPLHNDQUFzQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQzdFLE1BQU0sY0FBYyxHQUFHLEdBQUcsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxNQUFNLGNBQWMs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LElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXZHVSwrQkFBK0I7a0dBQS9CLCtCQUErQiw0SUNqRjVDLHNrWEF1VEE7OzJGRHRPYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsNkJBQTZCO29JQVEvQixNQUFNO3NCQURiLEtBQUs7Z0JBR0UsUUFBUTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGdyb3VwQnksIG1lcmdlTWFwLCByZWR1Y2UsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJVGVybUpTT05MRCwgTm9kZVR5cGUsIFNjaGVtYVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBrZXlUb0xhYmVsLCB1bmlxdWUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgSGVFbmdpbmVTZXJ2aWNlLFxuICBJT3JjaGVzdHJhdG9yQ29uZmlnLFxuICBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcsXG4gIGVuZ2luZUdpdFVybCxcbiAgSU1vZGVsXG59IGZyb20gJy4uL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IGJhc2VVcmwsIGdpdEJyYW5jaCwgZ2l0SG9tZSB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICcuLi8uLi9jb21tb24vcGx1cmFsaXplJztcbmltcG9ydCB7IEhlU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaElkLCBtYXRjaFR5cGUgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcblxudHlwZSBjb25maWdzID0gKElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZyB8IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZ1tdKVtdO1xuXG5jb25zdCBnaXRVcmwgPSBgJHtnaXRIb21lfS9oZXN0aWEtZW5naW5lLW9yY2hlc3RyYXRvci8tL2Jsb2IvJHtnaXRCcmFuY2goKX1gO1xuY29uc3QgZ2VuZXJhbERvY3NVcmwgPSBgJHtnaXRVcmx9L2hlc3RpYV9lYXJ0aC9vcmNoZXN0cmF0b3IvY29uZmlnL1JFQURNRS5tZGA7XG5jb25zdCBzdHJhdGVnaWVzRG9jcyA9IGAke2dpdFVybH0vaGVzdGlhX2VhcnRoL29yY2hlc3RyYXRvci9zdHJhdGVnaWVzYDtcblxuY29uc3Qgc2NoZW1hVHlwZUtleXMgPSBPYmplY3Qua2V5cyhTY2hlbWFUeXBlKTtcblxuY29uc3QgdG9TY2hlbWFUeXBlID0gKHZhbHVlOiBzdHJpbmcpID0+IGtleVRvTGFiZWwodmFsdWUpLnJlcGxhY2UoL1xccy9nLCAnJyk7XG5cbmNvbnN0IGlzU2NoZW1hVHlwZSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICBbXG4gICAgc2NoZW1hVHlwZUtleXMuaW5jbHVkZXModmFsdWUpLFxuICAgIHNjaGVtYVR5cGVLZXlzLmluY2x1ZGVzKHBsdXJhbGl6ZSh2YWx1ZSwgMSkpLFxuICAgIHNjaGVtYVR5cGVLZXlzLmluY2x1ZGVzKHBsdXJhbGl6ZSh0b1NjaGVtYVR5cGUodmFsdWUpLCAxKSksXG4gICAgWydlbWlzc2lvbnNSZXNvdXJjZVVzZScsICdpbXBhY3RzJywgJ2VuZHBvaW50cyddLmluY2x1ZGVzKHZhbHVlKVxuICBdLnNvbWUoQm9vbGVhbik7XG5cbmNvbnN0IGlzR2FwRmlsbGVkID0gKHsgcnVuU3RyYXRlZ3ksIG1lcmdlU3RyYXRlZ3ksIG1lcmdlQXJncyB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gIFsnYWRkX2JsYW5rX25vZGVfaWZfbWlzc2luZycsICdhZGRfa2V5X2lmX21pc3NpbmcnXS5pbmNsdWRlcyhydW5TdHJhdGVneSkgJiZcbiAgKG1lcmdlU3RyYXRlZ3kgIT09ICdsaXN0JyB8fCAhbWVyZ2VBcmdzPy5yZXBsYWNlVGhyZXNob2xkKTtcblxuY29uc3QgaXNSZWNhbGN1bGF0ZWQgPSAoeyBydW5TdHJhdGVneSwgbWVyZ2VTdHJhdGVneSwgbWVyZ2VBcmdzIH06IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZykgPT5cbiAgWydhZGRfYmxhbmtfbm9kZV9pZl9taXNzaW5nJywgJ2FkZF9rZXlfaWZfbWlzc2luZyddLmluY2x1ZGVzKHJ1blN0cmF0ZWd5KSAmJlxuICBtZXJnZVN0cmF0ZWd5ID09PSAnbGlzdCcgJiZcbiAgbWVyZ2VBcmdzPy5yZXBsYWNlVGhyZXNob2xkO1xuXG5jb25zdCBmaWx0ZXJHYXBGaWxsZWQgPSAoY29uZmlnczogY29uZmlncywgb25seUdhcEZpbGxlZDogYm9vbGVhbikgPT5cbiAgY29uZmlnc1xuICAgIC5tYXAobW9kZWwgPT4gKEFycmF5LmlzQXJyYXkobW9kZWwpICYmIG9ubHlHYXBGaWxsZWQgPyBtb2RlbC5maWx0ZXIoaXNHYXBGaWxsZWQpIDogbW9kZWwpKVxuICAgIC5maWx0ZXIobW9kZWwgPT4gIW9ubHlHYXBGaWxsZWQgfHwgQXJyYXkuaXNBcnJheShtb2RlbCkgfHwgaXNHYXBGaWxsZWQobW9kZWwpKTtcblxuY29uc3QgbW9kZWxNYXRjaCA9XG4gICh0ZXJtOiBzdHJpbmcpID0+XG4gICh7IGtleSwgbW9kZWwsIHZhbHVlIH06IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZykgPT5cbiAgICBba2V5LCBtb2RlbCwgdmFsdWVdLmZpbHRlcihCb29sZWFuKS5zb21lKHYgPT4gdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSkpO1xuXG5jb25zdCBmaWx0ZXJNb2RlbHMgPSAoY29uZmlnczogY29uZmlncywgdGVybSA9ICcnKSA9PlxuICBjb25maWdzXG4gICAgLm1hcChtb2RlbCA9PiAoQXJyYXkuaXNBcnJheShtb2RlbCkgJiYgISF0ZXJtID8gbW9kZWwuZmlsdGVyKG1vZGVsTWF0Y2godGVybSkpIDogbW9kZWwpKVxuICAgIC5maWx0ZXIobW9kZWwgPT4gIXRlcm0gfHwgQXJyYXkuaXNBcnJheShtb2RlbCkgfHwgbW9kZWxNYXRjaCh0ZXJtKShtb2RlbCkpO1xuXG5jb25zdCBtb2RlbEtleU5hbWUgPSAobW9kZWxLZXk6IHN0cmluZykgPT4gKG1vZGVsS2V5LmluY2x1ZGVzKCcuJykgPyBtb2RlbEtleS5zcGxpdCgnLicpWzFdIDogbW9kZWxLZXkpO1xuXG5jb25zdCBncm91cENvbmZpZyA9IChjb25maWdzOiBjb25maWdzKSA9PlxuICBmcm9tKGNvbmZpZ3MuZmxhdCgpKVxuICAgIC5waXBlKFxuICAgICAgZmlsdGVyKCh7IGtleSB9KSA9PiBpc1NjaGVtYVR5cGUoa2V5KSksXG4gICAgICBncm91cEJ5KCh7IGtleSB9KSA9PiBrZXkpLFxuICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZSh0b0FycmF5KCkpKSxcbiAgICAgIHJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBjdXJyWzBdLmtleTtcbiAgICAgICAgcHJldlt0b1NjaGVtYVR5cGUoa2V5KV0gPSBjdXJyO1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sIHt9KVxuICAgIClcbiAgICAudG9Qcm9taXNlKCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWVuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbmdpbmVPcmNoZXN0cmF0b3JFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBhbGxNb2RlbHM6IGNvbmZpZ3M7XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBjb25maWc/OiBJT3JjaGVzdHJhdG9yQ29uZmlnO1xuICBASW5wdXQoKVxuICBwcml2YXRlIG5vZGVUeXBlPzogTm9kZVR5cGU7XG5cbiAgcHVibGljIG1vZGVsS2V5TmFtZSA9IG1vZGVsS2V5TmFtZTtcbiAgcHVibGljIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICBwdWJsaWMgZ2VuZXJhbERvY3NVcmwgPSBnZW5lcmFsRG9jc1VybDtcbiAgcHVibGljIHN0cmF0ZWdpZXNEb2NzID0gc3RyYXRlZ2llc0RvY3M7XG4gIHB1YmxpYyBtb2RlbHM6IGNvbmZpZ3M7XG4gIHB1YmxpYyBncm91cGVkTW9kZWxzOiB7XG4gICAgW2tleTogc3RyaW5nXTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW107XG4gIH07XG4gIHB1YmxpYyBzZWxlY3RlZEdyb3VwZWRLZXk6IHN0cmluZztcblxuICBwdWJsaWMgdGVybXNCeUlkOiB7IFtpZDogc3RyaW5nXTogSVRlcm1KU09OTEQgfSA9IHt9O1xuXG4gIHB1YmxpYyBzaG93Q29uZmlnID0gZmFsc2U7XG4gIHB1YmxpYyBzZWFyY2ggPSAnJztcbiAgcHVibGljIG9ubHlHYXBGaWxsZWQgPSBmYWxzZTtcbiAgcHVibGljIHNob3dBZHZhbmNlZCA9IGZhbHNlO1xuICBwdWJsaWMgZGlzcGxheUJ5OiAnbGlzdCcgfCAndHlwZScgPSAnbGlzdCc7XG4gIHB1YmxpYyBzaG93RGlzcGxheUJ5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBoZXN0aWFFbmdpbmVTZXJ2aWNlOiBIZUVuZ2luZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBIZVNlYXJjaFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWc/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5hbGxNb2RlbHMgPSB0aGlzLmNvbmZpZy5tb2RlbHM7XG4gICAgICB0aGlzLmNvbXB1dGVUZXJtc0J5SWQoKTtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlck1vZGVscygpO1xuICAgIH1cbiAgICBpZiAoJ25vZGVUeXBlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdENvbmZpZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERlZmF1bHRDb25maWcoKSB7XG4gICAgY29uc3QgeyBtb2RlbHMgfSA9IGF3YWl0IHRoaXMuaGVzdGlhRW5naW5lU2VydmljZS5vY2hlc3RyYXRvckNvbmZpZyh0aGlzLm5vZGVUeXBlKTtcbiAgICB0aGlzLmFsbE1vZGVscyA9IG1vZGVscztcbiAgICB0aGlzLmNvbXB1dGVUZXJtc0J5SWQoKTtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJNb2RlbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29tcHV0ZVRlcm1zQnlJZCgpIHtcbiAgICBjb25zdCBpZHMgPSB1bmlxdWUoXG4gICAgICB0aGlzLmFsbE1vZGVsc1xuICAgICAgICAuZmxhdCgpXG4gICAgICAgIC5mbGF0TWFwKG1vZGVsID0+IFttb2RlbC5tb2RlbCwgbW9kZWwudmFsdWVdKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgKTtcbiAgICBjb25zdCB7IHJlc3VsdHMgfSA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2g8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KHtcbiAgICAgIGZpZWxkczogWydAdHlwZScsICdAaWQnLCAnbmFtZScsICd1bml0cyddLFxuICAgICAgbGltaXQ6IGlkcy5sZW5ndGgsXG4gICAgICBxdWVyeToge1xuICAgICAgICBib29sOiB7XG4gICAgICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICAgICAgc2hvdWxkOiBpZHMubWFwKG1hdGNoSWQpLFxuICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRlcm1zQnlJZCA9IHJlc3VsdHMucmVkdWNlKChwLCBjKSA9PiAoeyAuLi5wLCBbY1snQGlkJ11dOiBjIH0pLCB7fSk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUtleShfaW5kZXg6IG51bWJlciwgeyBrZXkgfSkge1xuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxMaW5rJCh7IG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5oZXN0aWFFbmdpbmVTZXJ2aWNlLm1vZGVsJCh7IG1vZGVsLCB0ZXJtOiB2YWx1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbFBhdGhMaW5rJCh7IG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5oZXN0aWFFbmdpbmVTZXJ2aWNlLm1vZGVsJCh7XG4gICAgICBwYXRoOiBgJHtlbmdpbmVHaXRVcmwoKX0vaGVzdGlhX2VhcnRoL21vZGVscy8ke21vZGVsfS8keyh2YWx1ZSB8fCAnJykucmVwbGFjZSgnLicsICcvJyl9LnB5YFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25maWdVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVzdGlhRW5naW5lU2VydmljZS5vcmNoZXN0cmF0b3JDb25maWdVcmwodGhpcy5ub2RlVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxLZXlVcmwoeyBtb2RlbEtleSB9OiBJTW9kZWwsIG1vZGVsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJ0cyA9IG1vZGVsS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3Qgc2NoZW1hVHlwZSA9IHBhcnRzLmxlbmd0aCA9PT0gMiA/IHBhcnRzWzBdIDogbW9kZWw7XG4gICAgY29uc3QgdXJsID0gW2Jhc2VVcmwoKSwgJ3NjaGVtYScsIHRvU2NoZW1hVHlwZShzY2hlbWFUeXBlKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy8nKTtcbiAgICByZXR1cm4gaXNTY2hlbWFUeXBlKHNjaGVtYVR5cGUpID8gYCR7dXJsfSMke3BhcnRzLnBvcCgpfWAgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGZpbHRlck1vZGVscygpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVscyA9IGZpbHRlck1vZGVscyhmaWx0ZXJHYXBGaWxsZWQodGhpcy5hbGxNb2RlbHMsIHRoaXMub25seUdhcEZpbGxlZCksIHRoaXMuc2VhcmNoKTtcbiAgICAgIHRoaXMubW9kZWxzID0gbW9kZWxzO1xuICAgICAgdGhpcy5ncm91cGVkTW9kZWxzID0gYXdhaXQgZ3JvdXBDb25maWcobW9kZWxzKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cGVkS2V5ID0gT2JqZWN0LmtleXModGhpcy5ncm91cGVkTW9kZWxzKT8uWzBdO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cD5cbiAgPGk+XG4gICAgVGhlIGNvbmZpZ3VyYXRpb24gYmVsb3cgaXMgYSBwcmV2aWV3IG9mIHRoZVxuICAgIDxhIFtocmVmXT1cImNvbmZpZ1VybFwiIHRhcmdldD1cIl9ibGFua1wiPkpTT04gY29uZmlndXJhdGlvbiBmaWxlPC9hPlxuICAgIHVzZWQgZm9yIHRoZSBvcmNoZXN0cmF0aW9uIG9mIHRoZSBIZXN0aWEncyBjYWxjdWxhdGlvbnMuXG4gIDwvaT5cbjwvcD5cbjxwPlxuICA8aT5Ob3RlOiBub3QgYWxsIG1vZGVscyBtaWdodCBiZSByZXByZXNlbnRlZCBhY2N1cmF0ZWx5LjwvaT5cbjwvcD5cblxuPGRpdiBjbGFzcz1cImlzLXNpemUtNyBpcy1pdGFsaWNcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbW9iaWxlIGlzLW11bHRpbGluZSBpcy12Y2VudGVyZWQgaXMtdmFyaWFibGUgaXMtMSBteS0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBsLTMgbW9kZWwtcGFyYWxsZWwgbXktM1wiPlxuICAgICAgICA8c3Bhbj5Nb2RlbHMgcnVubmluZyBpbiBwYXJhbGxlbDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgaGFzLXRleHQtcmlnaHRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93biBpcy1yaWdodCBoYXMtdGV4dC1sZWZ0IGlzLWRyb3Bkb3duLWZpbHRlcnNcIlxuICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInNob3dDb25maWdcIlxuICAgICAgICAoY2xpY2tPdXRzaWRlKT1cInNob3dDb25maWcgPSBmYWxzZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJzaG93Q29uZmlnID0gIXNob3dDb25maWdcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInNob3dDb25maWdcIlxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm9wdGlvbi1tZW51XCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJzaG93Q29uZmlnXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNvZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgaWQ9XCJvcHRpb24tbWVudVwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkIGhhcy1pY29ucy1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dCBzZWFyY2gtaW5wdXQgaXMtc2Vjb25kYXJ5IGlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5IGtleSwgbmFtZSBvciBtb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJNb2RlbHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImljb24gaXMtc21hbGwgaXMtcmlnaHRcIiAoY2xpY2spPVwic2VhcmNoID0gJyc7IGZpbHRlck1vZGVscygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlzLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzd2l0Y2ggaXMtc21hbGwgaXMtcm91bmRlZCBpcy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93QWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzaG93QWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWx0ZXJNb2RlbHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXMtc2l6ZS03XCIgZm9yPVwic2hvd0FkdmFuY2VkXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5TaG93IGFkdmFuY2VkIGRhdGE8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlzLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzd2l0Y2ggaXMtc21hbGwgaXMtcm91bmRlZCBpcy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvbmx5R2FwRmlsbGVkXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwib25seUdhcEZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImZpbHRlck1vZGVscygpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpcy1zaXplLTdcIiBmb3I9XCJvbmx5R2FwRmlsbGVkXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5TaG93IG9ubHkgZ2FwLWZpbGxlZCBkYXRhPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBoYXMtdGV4dC1yaWdodFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRyb3Bkb3duIGlzLXJpZ2h0IGhhcy10ZXh0LWxlZnRcIlxuICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInNob3dEaXNwbGF5QnlcIlxuICAgICAgICAoY2xpY2tPdXRzaWRlKT1cInNob3dEaXNwbGF5QnkgPSBmYWxzZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJzaG93RGlzcGxheUJ5ID0gIXNob3dEaXNwbGF5QnlcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZGlzcGxheS1tZW51XCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEaXNwbGF5IG9wdGlvbnNcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cInNob3dEaXNwbGF5QnlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImRpc3BsYXlCeVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGlzdCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsaXN0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0eXBlJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInRhYmxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgaWQ9XCJkaXNwbGF5LW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCIgKGNsaWNrKT1cInNob3dEaXNwbGF5QnkgPSBmYWxzZVwiPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImRpc3BsYXlCeSA9PT0gJ2xpc3QnXCIgKGNsaWNrKT1cImRpc3BsYXlCeSA9ICdsaXN0J1wiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+RGlzcGxheSBieSBQcmlvcml0eTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJkaXNwbGF5QnkgPT09ICd0eXBlJ1wiIChjbGljayk9XCJkaXNwbGF5QnkgPSAndHlwZSdcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInRhYmxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5EaXNwbGF5IGJ5IFR5cGU8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5QnkgPT09ICdsaXN0JyAmJiBtb2RlbHNcIj5cbiAgPGRpdiBjbGFzcz1cInBsLTNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaXN0OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWxzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlCeSA9PT0gJ3R5cGUnICYmIGdyb3VwZWRNb2RlbHNcIj5cbiAgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICA8dWw+XG4gICAgICA8bGlcbiAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRNb2RlbHMgfCBrZXlzOyB0cmFja0J5OiB0cmFja0J5S2V5XCJcbiAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZEdyb3VwZWRLZXkgPT09IGdyb3VwLmtleVwiPlxuICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWRHcm91cGVkS2V5ID0gZ3JvdXAua2V5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+e3sgZ3JvdXAua2V5IH19ICh7eyBncm91cC52YWx1ZS5sZW5ndGggfX0pPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwbC0zXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpc3Q7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBncm91cGVkTW9kZWxzW3NlbGVjdGVkR3JvdXBlZEtleV0gfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3Rlcm1MaW5rIGxldC12YWx1ZT5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TGFiZWw+XG4gICAgPHNwYW4+e3sgdmFsdWUgfCBrZXlUb0xhYmVsIH19PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZXJtc0J5SWRbdmFsdWVdOyBlbHNlIGRlZmF1bHRMYWJlbFwiPlxuICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwidGVybXNCeUlkW3ZhbHVlXVwiIFtzaG93RXh0ZXJuYWxMaW5rXT1cInRydWVcIj5cbiAgICAgIDxzcGFuPnt7IHRlcm1zQnlJZFt2YWx1ZV0ubmFtZSB9fTwvc3Bhbj5cbiAgICA8L2hlLW5vZGUtbGluaz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsTGlzdCBsZXQtZGF0YT5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgdiBvZiBkYXRhXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdiB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbCBsZXQtZGF0YT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXkoZGF0YSkgJiYgZGF0YS5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGwtMyBtb2RlbC1wYXJhbGxlbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGlzdDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGhyIC8+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQXJyYXkoZGF0YSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0yIG1vZGVsLXNlcmllIGlzLXNpemUtNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudCBwLTNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1jYXBpdGFsaXplZFwiPnt7IGRhdGEua2V5IHwga2V5VG9MYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgOlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRWaWV3PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVmYXVsdC12YWx1ZVwiPnt7IGRhdGEudmFsdWUgfX08L3NwYW4+XG5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPk1vZGVsOjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMlwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVybUxpbms7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBkYXRhLm1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNtb2RlbEZyb21QYXRoTGluaz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWxQYXRoTGluayQoZGF0YSkgfCBhc3luYyBhcyBsaW5rOyBlbHNlIGRlZmF1bHRWaWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxQYXRoTGluazsgY29udGV4dDogeyBtb2RlbDogZGF0YS5tb2RlbCwgdmFsdWU6IGRhdGEudmFsdWUsIGxpbmsgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbExpbmskKGRhdGEpIHwgYXN5bmMgYXMgbGluazsgZWxzZSBtb2RlbEZyb21QYXRoTGlua1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaW5rOyBjb250ZXh0OiB7IG1vZGVsOiBkYXRhLm1vZGVsLCB2YWx1ZTogZGF0YS52YWx1ZSwgbGluayB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWR2YW5jZWRcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5ydW5TdHJhdGVneVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+UnVuIHN0cmF0ZWd5Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdHJhdGVnaWVzTGluazsgY29udGV4dDogeyBzdHJhdGVneTogZGF0YS5ydW5TdHJhdGVneSwgdHlwZTogJ3J1bicgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtMyBpcy1zaXplLTdcIiAqbmdJZj1cImRhdGEucnVuQXJnc1wiPlxuICAgICAgICAgICAgICA8cD48Yj5SdW4gYXJndW1lbnRzOjwvYj48L3A+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdHJhdGVnaWVzQXJnczsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEucnVuQXJncyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5tZXJnZVN0cmF0ZWd5XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5NZXJnZSBzdHJhdGVneTo8L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgc3RyYXRlZ2llc0xpbms7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBzdHJhdGVneTogZGF0YS5tZXJnZVN0cmF0ZWd5LCB0eXBlOiAnbWVyZ2UnIH1cbiAgICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbC0zIGlzLXNpemUtN1wiICpuZ0lmPVwiZGF0YS5tZXJnZUFyZ3NcIj5cbiAgICAgICAgICAgICAgPHA+PGI+TWVyZ2UgYXJndW1lbnRzOjwvYj48L3A+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdHJhdGVnaWVzQXJnczsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRhdGEubWVyZ2VBcmdzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kZWxMaW5rS2V5IGxldC1tb2RlbD1cIm1vZGVsXCIgbGV0LWxpbms9XCJsaW5rXCI+XG4gIDxhIFtocmVmXT1cIm1vZGVsS2V5VXJsKGxpbmssIG1vZGVsKVwiIHRhcmdldD1cIl9ibGFua1wiPnt7IG1vZGVsS2V5TmFtZShsaW5rLm1vZGVsS2V5KSB9fTwvYT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kZWxMaW5rIGxldC1tb2RlbD1cIm1vZGVsXCIgbGV0LWxpbms9XCJsaW5rXCIgbGV0LXZhbHVlPVwidmFsdWVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmsudGVybVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtTGluazsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxpbmsudGVybSB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxzcGFuICpuZ0lmPVwiIWxpbmsudGVybSAmJiAhbGluaz8ubW9kZWxLZXlcIiBjbGFzcz1cImRlZmF1bHQtdmFsdWVcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxpbmsudGVybSAmJiBsaW5rPy5tb2RlbEtleVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpbmtLZXk7IGNvbnRleHQ6IHsgbGluaywgbW9kZWwgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8cCBjbGFzcz1cIm1vZGVsLWxpbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0yXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVybUxpbms7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtb2RlbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9zcGFuPlxuXG4gICAgPGEgY2xhc3M9XCJpcy1zaXplLTdcIiBbaHJlZl09XCJsaW5rLmRvY1BhdGhcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPihWaWV3IERvY3MpPC9zcGFuPlxuICAgICAgPGZhLWljb24gaWNvbj1cImV4dGVybmFsLWxpbmstYWx0XCI+PC9mYS1pY29uPlxuICAgIDwvYT5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbFBhdGhMaW5rIGxldC1tb2RlbD1cIm1vZGVsXCIgbGV0LWxpbms9XCJsaW5rXCIgbGV0LXZhbHVlPVwidmFsdWVcIj5cbiAgPHNwYW4gKm5nSWY9XCIhbGluaz8ubW9kZWxLZXlcIiBjbGFzcz1cImRlZmF1bHQtdmFsdWVcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGluaz8ubW9kZWxLZXlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaW5rS2V5OyBjb250ZXh0OiB7IGxpbmssIG1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHAgY2xhc3M9XCJtb2RlbC1wYXRoLWxpbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0yXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVybUxpbms7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtb2RlbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9zcGFuPlxuXG4gICAgPGEgY2xhc3M9XCJpcy1zaXplLTdcIiBbaHJlZl09XCJsaW5rLmRvY1BhdGhcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPihWaWV3IERvY3MpPC9zcGFuPlxuICAgICAgPGZhLWljb24gaWNvbj1cImV4dGVybmFsLWxpbmstYWx0XCI+PC9mYS1pY29uPlxuICAgIDwvYT5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdHJhdGVnaWVzTGluayBsZXQtc3RyYXRlZ3k9XCJzdHJhdGVneVwiIGxldC10eXBlPVwidHlwZVwiPlxuICA8c3BhbiBjbGFzcz1cInByLTIgaXMtaW5saW5lLWJsb2NrXCI+XG4gICAgPGNvZGU+e3sgc3RyYXRlZ3kgfX08L2NvZGU+XG4gIDwvc3Bhbj5cblxuICA8YVxuICAgIGNsYXNzPVwiaXMtc2l6ZS03XCJcbiAgICBbaHJlZl09XCJzdHJhdGVnaWVzRG9jcyArICcvJyArIHR5cGUgKyAnLycgKyAodHlwZSA9PT0gJ21lcmdlJyA/ICdtZXJnZV8nIDogJycpICsgc3RyYXRlZ3kgKyAnLm1kJ1wiXG4gICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+KFZpZXcgRG9jcyk8L3NwYW4+XG4gICAgPGZhLWljb24gaWNvbj1cImV4dGVybmFsLWxpbmstYWx0XCI+PC9mYS1pY29uPlxuICA8L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N0cmF0ZWdpZXNBcmdzIGxldC1hcmdzPlxuICA8ZGl2IGNsYXNzPVwicGwtMlwiPlxuICAgIDxwICpuZ0Zvcj1cImxldCBhcmcgb2YgYXJncyB8IGtleXNcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaGFzLXRleHQtdW5kZXJsaW5lXCI+e3sgYXJnLmtleSB9fTwvc3Bhbj5cbiAgICAgIDpcbiAgICAgIDxjb2RlPnt7IGFyZy52YWx1ZSB8IGpzb24gfX08L2NvZGU+XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0L2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1vcmNoZXN0cmF0b3ItZWRpdC9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQWUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUlMLFlBQVksRUFFYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSS9ELE1BQU0sTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLFdBQVcsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUM3RSxNQUFNLGNBQWMsR0FBRyxHQUFHLE1BQU0s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QUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5RixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F2R1UsK0JBQStCO2tHQUEvQiwrQkFBK0IsNElDakY1Qyxza1hBdVRBOzsyRkR0T2EsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDZCQUE2QjtvSUFRL0IsTUFBTTtzQkFEYixLQUFLO2dCQUdFLFFBQVE7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBncm91cEJ5LCBtZXJnZU1hcCwgcmVkdWNlLCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBTY2hlbWFUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsga2V5VG9MYWJlbCwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7XG4gIEhlRW5naW5lU2VydmljZSxcbiAgSU9yY2hlc3RyYXRvckNvbmZpZyxcbiAgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnLFxuICBlbmdpbmVHaXRVcmwsXG4gIElNb2RlbFxufSBmcm9tICcuLi9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5LCBiYXNlVXJsLCBnaXRCcmFuY2gsIGdpdEhvbWUgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnLi4vLi4vY29tbW9uL3BsdXJhbGl6ZSc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hJZCwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5cbnR5cGUgY29uZmlncyA9IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXTtcblxuY29uc3QgZ2l0VXJsID0gYCR7Z2l0SG9tZX0vJHtSZXBvc2l0b3J5Lm9yY2hlc3RyYXRvcn0vLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcbmNvbnN0IGdlbmVyYWxEb2NzVXJsID0gYCR7Z2l0VXJsfS9oZXN0aWFfZWFydGgvb3JjaGVzdHJhdG9yL2NvbmZpZy9SRUFETUUubWRgO1xuY29uc3Qgc3RyYXRlZ2llc0RvY3MgPSBgJHtnaXRVcmx9L2hlc3RpYV9lYXJ0aC9vcmNoZXN0cmF0b3Ivc3RyYXRlZ2llc2A7XG5cbmNvbnN0IHNjaGVtYVR5cGVLZXlzID0gT2JqZWN0LmtleXMoU2NoZW1hVHlwZSk7XG5cbmNvbnN0IHRvU2NoZW1hVHlwZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBrZXlUb0xhYmVsKHZhbHVlKS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG5jb25zdCBpc1NjaGVtYVR5cGUgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgW1xuICAgIHNjaGVtYVR5cGVLZXlzLmluY2x1ZGVzKHZhbHVlKSxcbiAgICBzY2hlbWFUeXBlS2V5cy5pbmNsdWRlcyhwbHVyYWxpemUodmFsdWUsIDEpKSxcbiAgICBzY2hlbWFUeXBlS2V5cy5pbmNsdWRlcyhwbHVyYWxpemUodG9TY2hlbWFUeXBlKHZhbHVlKSwgMSkpLFxuICAgIFsnZW1pc3Npb25zUmVzb3VyY2VVc2UnLCAnaW1wYWN0cycsICdlbmRwb2ludHMnXS5pbmNsdWRlcyh2YWx1ZSlcbiAgXS5zb21lKEJvb2xlYW4pO1xuXG5jb25zdCBpc0dhcEZpbGxlZCA9ICh7IHJ1blN0cmF0ZWd5LCBtZXJnZVN0cmF0ZWd5LCBtZXJnZUFyZ3MgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSA9PlxuICBbJ2FkZF9ibGFua19ub2RlX2lmX21pc3NpbmcnLCAnYWRkX2tleV9pZl9taXNzaW5nJ10uaW5jbHVkZXMocnVuU3RyYXRlZ3kpICYmXG4gIChtZXJnZVN0cmF0ZWd5ICE9PSAnbGlzdCcgfHwgIW1lcmdlQXJncz8ucmVwbGFjZVRocmVzaG9sZCk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKHsgcnVuU3RyYXRlZ3ksIG1lcmdlU3RyYXRlZ3ksIG1lcmdlQXJncyB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gIFsnYWRkX2JsYW5rX25vZGVfaWZfbWlzc2luZycsICdhZGRfa2V5X2lmX21pc3NpbmcnXS5pbmNsdWRlcyhydW5TdHJhdGVneSkgJiZcbiAgbWVyZ2VTdHJhdGVneSA9PT0gJ2xpc3QnICYmXG4gIG1lcmdlQXJncz8ucmVwbGFjZVRocmVzaG9sZDtcblxuY29uc3QgZmlsdGVyR2FwRmlsbGVkID0gKGNvbmZpZ3M6IGNvbmZpZ3MsIG9ubHlHYXBGaWxsZWQ6IGJvb2xlYW4pID0+XG4gIGNvbmZpZ3NcbiAgICAubWFwKG1vZGVsID0+IChBcnJheS5pc0FycmF5KG1vZGVsKSAmJiBvbmx5R2FwRmlsbGVkID8gbW9kZWwuZmlsdGVyKGlzR2FwRmlsbGVkKSA6IG1vZGVsKSlcbiAgICAuZmlsdGVyKG1vZGVsID0+ICFvbmx5R2FwRmlsbGVkIHx8IEFycmF5LmlzQXJyYXkobW9kZWwpIHx8IGlzR2FwRmlsbGVkKG1vZGVsKSk7XG5cbmNvbnN0IG1vZGVsTWF0Y2ggPVxuICAodGVybTogc3RyaW5nKSA9PlxuICAoeyBrZXksIG1vZGVsLCB2YWx1ZSB9OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gICAgW2tleSwgbW9kZWwsIHZhbHVlXS5maWx0ZXIoQm9vbGVhbikuc29tZSh2ID0+IHYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKTtcblxuY29uc3QgZmlsdGVyTW9kZWxzID0gKGNvbmZpZ3M6IGNvbmZpZ3MsIHRlcm0gPSAnJykgPT5cbiAgY29uZmlnc1xuICAgIC5tYXAobW9kZWwgPT4gKEFycmF5LmlzQXJyYXkobW9kZWwpICYmICEhdGVybSA/IG1vZGVsLmZpbHRlcihtb2RlbE1hdGNoKHRlcm0pKSA6IG1vZGVsKSlcbiAgICAuZmlsdGVyKG1vZGVsID0+ICF0ZXJtIHx8IEFycmF5LmlzQXJyYXkobW9kZWwpIHx8IG1vZGVsTWF0Y2godGVybSkobW9kZWwpKTtcblxuY29uc3QgbW9kZWxLZXlOYW1lID0gKG1vZGVsS2V5OiBzdHJpbmcpID0+IChtb2RlbEtleS5pbmNsdWRlcygnLicpID8gbW9kZWxLZXkuc3BsaXQoJy4nKVsxXSA6IG1vZGVsS2V5KTtcblxuY29uc3QgZ3JvdXBDb25maWcgPSAoY29uZmlnczogY29uZmlncykgPT5cbiAgZnJvbShjb25maWdzLmZsYXQoKSlcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoeyBrZXkgfSkgPT4gaXNTY2hlbWFUeXBlKGtleSkpLFxuICAgICAgZ3JvdXBCeSgoeyBrZXkgfSkgPT4ga2V5KSxcbiAgICAgIG1lcmdlTWFwKGdyb3VwID0+IGdyb3VwLnBpcGUodG9BcnJheSgpKSksXG4gICAgICByZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gY3VyclswXS5rZXk7XG4gICAgICAgIHByZXZbdG9TY2hlbWFUeXBlKGtleSldID0gY3VycjtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7fSlcbiAgICApXG4gICAgLnRvUHJvbWlzZSgpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW5naW5lT3JjaGVzdHJhdG9yRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgYWxsTW9kZWxzOiBjb25maWdzO1xuXG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY29uZmlnPzogSU9yY2hlc3RyYXRvckNvbmZpZztcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBub2RlVHlwZT86IE5vZGVUeXBlO1xuXG4gIHB1YmxpYyBtb2RlbEtleU5hbWUgPSBtb2RlbEtleU5hbWU7XG4gIHB1YmxpYyBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbiAgcHVibGljIGdlbmVyYWxEb2NzVXJsID0gZ2VuZXJhbERvY3NVcmw7XG4gIHB1YmxpYyBzdHJhdGVnaWVzRG9jcyA9IHN0cmF0ZWdpZXNEb2NzO1xuICBwdWJsaWMgbW9kZWxzOiBjb25maWdzO1xuICBwdWJsaWMgZ3JvdXBlZE1vZGVsczoge1xuICAgIFtrZXk6IHN0cmluZ106IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZ1tdO1xuICB9O1xuICBwdWJsaWMgc2VsZWN0ZWRHcm91cGVkS2V5OiBzdHJpbmc7XG5cbiAgcHVibGljIHRlcm1zQnlJZDogeyBbaWQ6IHN0cmluZ106IElUZXJtSlNPTkxEIH0gPSB7fTtcblxuICBwdWJsaWMgc2hvd0NvbmZpZyA9IGZhbHNlO1xuICBwdWJsaWMgc2VhcmNoID0gJyc7XG4gIHB1YmxpYyBvbmx5R2FwRmlsbGVkID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93QWR2YW5jZWQgPSBmYWxzZTtcbiAgcHVibGljIGRpc3BsYXlCeTogJ2xpc3QnIHwgJ3R5cGUnID0gJ2xpc3QnO1xuICBwdWJsaWMgc2hvd0Rpc3BsYXlCeSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaGVzdGlhRW5naW5lU2VydmljZTogSGVFbmdpbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYWxsTW9kZWxzID0gdGhpcy5jb25maWcubW9kZWxzO1xuICAgICAgdGhpcy5jb21wdXRlVGVybXNCeUlkKCk7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJNb2RlbHMoKTtcbiAgICB9XG4gICAgaWYgKCdub2RlVHlwZScgaW4gY2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZERlZmF1bHRDb25maWcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWREZWZhdWx0Q29uZmlnKCkge1xuICAgIGNvbnN0IHsgbW9kZWxzIH0gPSBhd2FpdCB0aGlzLmhlc3RpYUVuZ2luZVNlcnZpY2Uub2NoZXN0cmF0b3JDb25maWcodGhpcy5ub2RlVHlwZSk7XG4gICAgdGhpcy5hbGxNb2RlbHMgPSBtb2RlbHM7XG4gICAgdGhpcy5jb21wdXRlVGVybXNCeUlkKCk7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyTW9kZWxzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbXB1dGVUZXJtc0J5SWQoKSB7XG4gICAgY29uc3QgaWRzID0gdW5pcXVlKFxuICAgICAgdGhpcy5hbGxNb2RlbHNcbiAgICAgICAgLmZsYXQoKVxuICAgICAgICAuZmxhdE1hcChtb2RlbCA9PiBbbW9kZWwubW9kZWwsIG1vZGVsLnZhbHVlXSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICk7XG4gICAgY29uc3QgeyByZXN1bHRzIH0gPSBhd2FpdCB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoPElUZXJtSlNPTkxELCBOb2RlVHlwZS5UZXJtPih7XG4gICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnLCAndW5pdHMnXSxcbiAgICAgIGxpbWl0OiBpZHMubGVuZ3RoLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgYm9vbDoge1xuICAgICAgICAgIG11c3Q6IFttYXRjaFR5cGUoTm9kZVR5cGUuVGVybSldLFxuICAgICAgICAgIHNob3VsZDogaWRzLm1hcChtYXRjaElkKSxcbiAgICAgICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy50ZXJtc0J5SWQgPSByZXN1bHRzLnJlZHVjZSgocCwgYykgPT4gKHsgLi4ucCwgW2NbJ0BpZCddXTogYyB9KSwge30pO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlLZXkoX2luZGV4OiBudW1iZXIsIHsga2V5IH0pIHtcbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgcHVibGljIG1vZGVsTGluayQoeyBtb2RlbCwgdmFsdWUgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVzdGlhRW5naW5lU2VydmljZS5tb2RlbCQoeyBtb2RlbCwgdGVybTogdmFsdWUgfSk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxQYXRoTGluayQoeyBtb2RlbCwgdmFsdWUgfTogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVzdGlhRW5naW5lU2VydmljZS5tb2RlbCQoe1xuICAgICAgcGF0aDogYCR7ZW5naW5lR2l0VXJsKCl9L2hlc3RpYV9lYXJ0aC9tb2RlbHMvJHttb2RlbH0vJHsodmFsdWUgfHwgJycpLnJlcGxhY2UoJy4nLCAnLycpfS5weWBcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmhlc3RpYUVuZ2luZVNlcnZpY2Uub3JjaGVzdHJhdG9yQ29uZmlnVXJsKHRoaXMubm9kZVR5cGUpO1xuICB9XG5cbiAgcHVibGljIG1vZGVsS2V5VXJsKHsgbW9kZWxLZXkgfTogSU1vZGVsLCBtb2RlbDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFydHMgPSBtb2RlbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBwYXJ0cy5sZW5ndGggPT09IDIgPyBwYXJ0c1swXSA6IG1vZGVsO1xuICAgIGNvbnN0IHVybCA9IFtiYXNlVXJsKCksICdzY2hlbWEnLCB0b1NjaGVtYVR5cGUoc2NoZW1hVHlwZSldLmZpbHRlcihCb29sZWFuKS5qb2luKCcvJyk7XG4gICAgcmV0dXJuIGlzU2NoZW1hVHlwZShzY2hlbWFUeXBlKSA/IGAke3VybH0jJHtwYXJ0cy5wb3AoKX1gIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJNb2RlbHMoKSB7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbHMgPSBmaWx0ZXJNb2RlbHMoZmlsdGVyR2FwRmlsbGVkKHRoaXMuYWxsTW9kZWxzLCB0aGlzLm9ubHlHYXBGaWxsZWQpLCB0aGlzLnNlYXJjaCk7XG4gICAgICB0aGlzLm1vZGVscyA9IG1vZGVscztcbiAgICAgIHRoaXMuZ3JvdXBlZE1vZGVscyA9IGF3YWl0IGdyb3VwQ29uZmlnKG1vZGVscyk7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBlZEtleSA9IE9iamVjdC5rZXlzKHRoaXMuZ3JvdXBlZE1vZGVscyk/LlswXTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHA+XG4gIDxpPlxuICAgIFRoZSBjb25maWd1cmF0aW9uIGJlbG93IGlzIGEgcHJldmlldyBvZiB0aGVcbiAgICA8YSBbaHJlZl09XCJjb25maWdVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5KU09OIGNvbmZpZ3VyYXRpb24gZmlsZTwvYT5cbiAgICB1c2VkIGZvciB0aGUgb3JjaGVzdHJhdGlvbiBvZiB0aGUgSGVzdGlhJ3MgY2FsY3VsYXRpb25zLlxuICA8L2k+XG48L3A+XG48cD5cbiAgPGk+Tm90ZTogbm90IGFsbCBtb2RlbHMgbWlnaHQgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseS48L2k+XG48L3A+XG5cbjxkaXYgY2xhc3M9XCJpcy1zaXplLTcgaXMtaXRhbGljXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW1vYmlsZSBpcy1tdWx0aWxpbmUgaXMtdmNlbnRlcmVkIGlzLXZhcmlhYmxlIGlzLTEgbXktMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbC0zIG1vZGVsLXBhcmFsbGVsIG15LTNcIj5cbiAgICAgICAgPHNwYW4+TW9kZWxzIHJ1bm5pbmcgaW4gcGFyYWxsZWw8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IGhhcy10ZXh0LXJpZ2h0XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24gaXMtcmlnaHQgaGFzLXRleHQtbGVmdCBpcy1kcm9wZG93bi1maWx0ZXJzXCJcbiAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJzaG93Q29uZmlnXCJcbiAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJzaG93Q29uZmlnID0gZmFsc2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRyaWdnZXJcIiAoY2xpY2spPVwic2hvd0NvbmZpZyA9ICFzaG93Q29uZmlnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtZ2hvc3RcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJzaG93Q29uZmlnXCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJvcHRpb24tbWVudVwiXG4gICAgICAgICAgICBuZ2JUb29sdGlwPVwiRmlsdGVyc1wiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwic2hvd0NvbmZpZ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjb2dcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGlkPVwib3B0aW9uLW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZCBoYXMtaWNvbnMtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQgc2VhcmNoLWlucHV0IGlzLXNlY29uZGFyeSBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbGxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieSBrZXksIG5hbWUgb3IgbW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZmlsdGVyTW9kZWxzKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJpY29uIGlzLXNtYWxsIGlzLXJpZ2h0XCIgKGNsaWNrKT1cInNlYXJjaCA9ICcnOyBmaWx0ZXJNb2RlbHMoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3dpdGNoIGlzLXNtYWxsIGlzLXJvdW5kZWQgaXMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2hvd0FkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZmlsdGVyTW9kZWxzKClcIiAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImlzLXNpemUtN1wiIGZvcj1cInNob3dBZHZhbmNlZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+U2hvdyBhZHZhbmNlZCBkYXRhPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3dpdGNoIGlzLXNtYWxsIGlzLXJvdW5kZWQgaXMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib25seUdhcEZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICBpZD1cIm9ubHlHYXBGaWxsZWRcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWx0ZXJNb2RlbHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXMtc2l6ZS03XCIgZm9yPVwib25seUdhcEZpbGxlZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+U2hvdyBvbmx5IGdhcC1maWxsZWQgZGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgaGFzLXRleHQtcmlnaHRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93biBpcy1yaWdodCBoYXMtdGV4dC1sZWZ0XCJcbiAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJzaG93RGlzcGxheUJ5XCJcbiAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJzaG93RGlzcGxheUJ5ID0gZmFsc2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRyaWdnZXJcIiAoY2xpY2spPVwic2hvd0Rpc3BsYXlCeSA9ICFzaG93RGlzcGxheUJ5XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtZ2hvc3RcIlxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImRpc3BsYXktbWVudVwiXG4gICAgICAgICAgICBuZ2JUb29sdGlwPVwiRGlzcGxheSBvcHRpb25zXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJzaG93RGlzcGxheUJ5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJkaXNwbGF5QnlcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpc3QnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndHlwZSdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0YWJsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGlkPVwiZGlzcGxheS1tZW51XCIgcm9sZT1cIm1lbnVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiIChjbGljayk9XCJzaG93RGlzcGxheUJ5ID0gZmFsc2VcIj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJkaXNwbGF5QnkgPT09ICdsaXN0J1wiIChjbGljayk9XCJkaXNwbGF5QnkgPSAnbGlzdCdcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRpc3BsYXkgYnkgUHJpb3JpdHk8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwiZGlzcGxheUJ5ID09PSAndHlwZSdcIiAoY2xpY2spPVwiZGlzcGxheUJ5ID0gJ3R5cGUnXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0YWJsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+RGlzcGxheSBieSBUeXBlPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUJ5ID09PSAnbGlzdCcgJiYgbW9kZWxzXCI+XG4gIDxkaXYgY2xhc3M9XCJwbC0zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGlzdDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1vZGVscyB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5QnkgPT09ICd0eXBlJyAmJiBncm91cGVkTW9kZWxzXCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgPHVsPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cGVkTW9kZWxzIHwga2V5czsgdHJhY2tCeTogdHJhY2tCeUtleVwiXG4gICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRHcm91cGVkS2V5ID09PSBncm91cC5rZXlcIj5cbiAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkR3JvdXBlZEtleSA9IGdyb3VwLmtleVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPnt7IGdyb3VwLmtleSB9fSAoe3sgZ3JvdXAudmFsdWUubGVuZ3RoIH19KTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicGwtM1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaXN0OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ3JvdXBlZE1vZGVsc1tzZWxlY3RlZEdyb3VwZWRLZXldIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN0ZXJtTGluayBsZXQtdmFsdWU+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExhYmVsPlxuICAgIDxzcGFuPnt7IHZhbHVlIHwga2V5VG9MYWJlbCB9fTwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVybXNCeUlkW3ZhbHVlXTsgZWxzZSBkZWZhdWx0TGFiZWxcIj5cbiAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cInRlcm1zQnlJZFt2YWx1ZV1cIiBbc2hvd0V4dGVybmFsTGlua109XCJ0cnVlXCI+XG4gICAgICA8c3Bhbj57eyB0ZXJtc0J5SWRbdmFsdWVdLm5hbWUgfX08L3NwYW4+XG4gICAgPC9oZS1ub2RlLWxpbms+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RlbExpc3QgbGV0LWRhdGE+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHYgb2YgZGF0YVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHYgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kZWwgbGV0LWRhdGE+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FycmF5KGRhdGEpICYmIGRhdGEubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cInBsLTMgbW9kZWwtcGFyYWxsZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RlbExpc3Q7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBkYXRhIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxociAvPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0FycmF5KGRhdGEpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMiBtb2RlbC1zZXJpZSBpcy1zaXplLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnQgcC0zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtY2FwaXRhbGl6ZWRcIj57eyBkYXRhLmtleSB8IGtleVRvTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDpcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Vmlldz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlZmF1bHQtdmFsdWVcIj57eyBkYXRhLnZhbHVlIH19PC9zcGFuPlxuXG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj5Nb2RlbDo8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlcm1MaW5rOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZGF0YS5tb2RlbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbW9kZWxGcm9tUGF0aExpbms+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsUGF0aExpbmskKGRhdGEpIHwgYXN5bmMgYXMgbGluazsgZWxzZSBkZWZhdWx0Vmlld1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsUGF0aExpbms7IGNvbnRleHQ6IHsgbW9kZWw6IGRhdGEubW9kZWwsIHZhbHVlOiBkYXRhLnZhbHVlLCBsaW5rIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWxMaW5rJChkYXRhKSB8IGFzeW5jIGFzIGxpbms7IGVsc2UgbW9kZWxGcm9tUGF0aExpbmtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGluazsgY29udGV4dDogeyBtb2RlbDogZGF0YS5tb2RlbCwgdmFsdWU6IGRhdGEudmFsdWUsIGxpbmsgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FkdmFuY2VkXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEucnVuU3RyYXRlZ3lcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPlJ1biBzdHJhdGVneTo8L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0xpbms7IGNvbnRleHQ6IHsgc3RyYXRlZ3k6IGRhdGEucnVuU3RyYXRlZ3ksIHR5cGU6ICdydW4nIH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsLTMgaXMtc2l6ZS03XCIgKm5nSWY9XCJkYXRhLnJ1bkFyZ3NcIj5cbiAgICAgICAgICAgICAgPHA+PGI+UnVuIGFyZ3VtZW50czo8L2I+PC9wPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0FyZ3M7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBkYXRhLnJ1bkFyZ3MgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEubWVyZ2VTdHJhdGVneVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+TWVyZ2Ugc3RyYXRlZ3k6PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHN0cmF0ZWdpZXNMaW5rO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgc3RyYXRlZ3k6IGRhdGEubWVyZ2VTdHJhdGVneSwgdHlwZTogJ21lcmdlJyB9XG4gICAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtMyBpcy1zaXplLTdcIiAqbmdJZj1cImRhdGEubWVyZ2VBcmdzXCI+XG4gICAgICAgICAgICAgIDxwPjxiPk1lcmdlIGFyZ3VtZW50czo8L2I+PC9wPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyYXRlZ2llc0FyZ3M7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBkYXRhLm1lcmdlQXJncyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsTGlua0tleSBsZXQtbW9kZWw9XCJtb2RlbFwiIGxldC1saW5rPVwibGlua1wiPlxuICA8YSBbaHJlZl09XCJtb2RlbEtleVVybChsaW5rLCBtb2RlbClcIiB0YXJnZXQ9XCJfYmxhbmtcIj57eyBtb2RlbEtleU5hbWUobGluay5tb2RlbEtleSkgfX08L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGVsTGluayBsZXQtbW9kZWw9XCJtb2RlbFwiIGxldC1saW5rPVwibGlua1wiIGxldC12YWx1ZT1cInZhbHVlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaW5rLnRlcm1cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVybUxpbms7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsaW5rLnRlcm0gfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3BhbiAqbmdJZj1cIiFsaW5rLnRlcm0gJiYgIWxpbms/Lm1vZGVsS2V5XCIgY2xhc3M9XCJkZWZhdWx0LXZhbHVlXCI+e3sgdmFsdWUgfX08L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaW5rLnRlcm0gJiYgbGluaz8ubW9kZWxLZXlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kZWxMaW5rS2V5OyBjb250ZXh0OiB7IGxpbmssIG1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHAgY2xhc3M9XCJtb2RlbC1saW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+TW9kZWw6PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlcm1MaW5rOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWwgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cblxuICAgIDxhIGNsYXNzPVwiaXMtc2l6ZS03XCIgW2hyZWZdPVwibGluay5kb2NQYXRoXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgICAgIDxmYS1pY29uIGljb249XCJleHRlcm5hbC1saW5rLWFsdFwiPjwvZmEtaWNvbj5cbiAgICA8L2E+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kZWxQYXRoTGluayBsZXQtbW9kZWw9XCJtb2RlbFwiIGxldC1saW5rPVwibGlua1wiIGxldC12YWx1ZT1cInZhbHVlXCI+XG4gIDxzcGFuICpuZ0lmPVwiIWxpbms/Lm1vZGVsS2V5XCIgY2xhc3M9XCJkZWZhdWx0LXZhbHVlXCI+e3sgdmFsdWUgfX08L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbms/Lm1vZGVsS2V5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGVsTGlua0tleTsgY29udGV4dDogeyBsaW5rLCBtb2RlbCB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxwIGNsYXNzPVwibW9kZWwtcGF0aC1saW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+TW9kZWw6PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlcm1MaW5rOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWwgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cblxuICAgIDxhIGNsYXNzPVwiaXMtc2l6ZS03XCIgW2hyZWZdPVwibGluay5kb2NQYXRoXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgICAgIDxmYS1pY29uIGljb249XCJleHRlcm5hbC1saW5rLWFsdFwiPjwvZmEtaWNvbj5cbiAgICA8L2E+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3RyYXRlZ2llc0xpbmsgbGV0LXN0cmF0ZWd5PVwic3RyYXRlZ3lcIiBsZXQtdHlwZT1cInR5cGVcIj5cbiAgPHNwYW4gY2xhc3M9XCJwci0yIGlzLWlubGluZS1ibG9ja1wiPlxuICAgIDxjb2RlPnt7IHN0cmF0ZWd5IH19PC9jb2RlPlxuICA8L3NwYW4+XG5cbiAgPGFcbiAgICBjbGFzcz1cImlzLXNpemUtN1wiXG4gICAgW2hyZWZdPVwic3RyYXRlZ2llc0RvY3MgKyAnLycgKyB0eXBlICsgJy8nICsgKHR5cGUgPT09ICdtZXJnZScgPyAnbWVyZ2VfJyA6ICcnKSArIHN0cmF0ZWd5ICsgJy5tZCdcIlxuICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPihWaWV3IERvY3MpPC9zcGFuPlxuICAgIDxmYS1pY29uIGljb249XCJleHRlcm5hbC1saW5rLWFsdFwiPjwvZmEtaWNvbj5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdHJhdGVnaWVzQXJncyBsZXQtYXJncz5cbiAgPGRpdiBjbGFzcz1cInBsLTJcIj5cbiAgICA8cCAqbmdGb3I9XCJsZXQgYXJnIG9mIGFyZ3MgfCBrZXlzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXVuZGVybGluZVwiPnt7IGFyZy5rZXkgfX08L3NwYW4+XG4gICAgICA6XG4gICAgICA8Y29kZT57eyBhcmcudmFsdWUgfCBqc29uIH19PC9jb2RlPlxuICAgIDwvcD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|