@c8y/ngx-components 1021.22.138 → 1021.22.140

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-library-details.component.d.ts","sourceRoot":"","sources":["../../../datapoint-library/details/datapoint-library-details.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAE,MAAM,EAAY,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAQ,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAqC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EACL,uBAAuB,EAGxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAEL,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;;AAEhD,qBAMa,gCAAiC,YAAW,MAAM,EAAE,SAAS;IActE,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,wBAAwB;IACqB,MAAM,EAAE,uBAAuB;IAtBtF,IAAI,SAA0B;IAC9B,SAAS,EAAE,UAAU,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,UAAQ;IAEjB,WAAW,KAAM;IAEjB,QAAQ,EAAE,YAAY,CAAC;gBAGb,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,sBAAsB,EAC9B,wBAAwB,EAAE,wBAAwB,EACL,MAAM,EAAE,uBAAuB;IAKtF,QAAQ;IAMR,WAAW,IAAI,IAAI;IAMb,IAAI,CAAC,KAAK,KAAA;IA+BhB,MAAM;IAIN,UAAU;IAQJ,aAAa;IAuBnB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,6BAA6B;YAmBvB,IAAI;IAgClB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAgEhB,OAAO,CAAC,gBAAgB;yCAvQb,gCAAgC;2CAAhC,gCAAgC;CAiR5C"}
1
+ {"version":3,"file":"datapoint-library-details.component.d.ts","sourceRoot":"","sources":["../../../datapoint-library/details/datapoint-library-details.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAE,MAAM,EAAY,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAQ,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAqC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EACL,uBAAuB,EAGxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAEL,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;;AAEhD,qBAMa,gCAAiC,YAAW,MAAM,EAAE,SAAS;IActE,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,wBAAwB;IACqB,MAAM,EAAE,uBAAuB;IAtBtF,IAAI,SAA0B;IAC9B,SAAS,EAAE,UAAU,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,UAAQ;IAEjB,WAAW,KAAM;IAEjB,QAAQ,EAAE,YAAY,CAAC;gBAGb,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,sBAAsB,EAC9B,wBAAwB,EAAE,wBAAwB,EACL,MAAM,EAAE,uBAAuB;IAKtF,QAAQ;IAMR,WAAW,IAAI,IAAI;IAMb,IAAI,CAAC,KAAK,KAAA;IA+BhB,MAAM;IAIN,UAAU;IAQJ,aAAa;IAuBnB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,6BAA6B;YAmBvB,IAAI;IAgClB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAmDhB,OAAO,CAAC,gBAAgB;yCA1Pb,gCAAgC;2CAAhC,gCAAgC;CAoQ5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-attributes-form-validation.service.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,SAAS,EAET,WAAW,EAEZ,MAAM,gBAAgB,CAAC;;AAIxB,qBACa,wCAAwC;IACvC,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C,mBAAmB,CAAC,cAAc,GAAE,MAAM,EAAO,GAAG,SAAS;IA4B7D,sBAAsB,CAAC,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO;IA8CjE,wBAAwB,CAAC,oBAAoB,EAAE,GAAG;IAwDlD,kBAAkB,IAAI,WAAW,EAAE;IAInC,kBAAkB,IAAI,WAAW,EAAE;IAInC,wBAAwB,IAAI,WAAW,EAAE;IAIzC,qBAAqB,IAAI,WAAW,EAAE;IAStC,mBAAmB,IAAI,WAAW,EAAE;IAcpC,mBAAmB,IAAI,WAAW,EAAE;IAIpC,iBAAiB,IAAI,WAAW,EAAE;IAIlC,mBAAmB,IAAI,WAAW,EAAE;IAIpC,oBAAoB,IAAI,WAAW,EAAE;IAUrC,kBAAkB,IAAI,SAAS;IAO/B,iBAAiB,IAAI,SAAS;IAQ9B,mBAAmB,IAAI,SAAS;IAMhC,kBAAkB,IAAI,SAAS;IAO/B,OAAO,CAAC,qBAAqB;yCA1NlB,wCAAwC;6CAAxC,wCAAwC;CAqOpD"}
1
+ {"version":3,"file":"datapoint-attributes-form-validation.service.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,SAAS,EAET,WAAW,EAEZ,MAAM,gBAAgB,CAAC;;AAIxB,qBACa,wCAAwC;IACvC,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C,mBAAmB,CAAC,cAAc,GAAE,MAAM,EAAO,GAAG,SAAS;IA4B7D,sBAAsB,CAAC,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO;IA8CjE,wBAAwB,CAAC,oBAAoB,EAAE,GAAG;IAwDlD,kBAAkB,IAAI,WAAW,EAAE;IAInC,kBAAkB,IAAI,WAAW,EAAE;IAInC,wBAAwB,IAAI,WAAW,EAAE;IAIzC,qBAAqB,IAAI,WAAW,EAAE;IAItC,mBAAmB,IAAI,WAAW,EAAE;IAapC,mBAAmB,IAAI,WAAW,EAAE;IAIpC,iBAAiB,IAAI,WAAW,EAAE;IAIlC,mBAAmB,IAAI,WAAW,EAAE;IAIpC,oBAAoB,IAAI,WAAW,EAAE;IAUrC,kBAAkB,IAAI,SAAS;IAO/B,iBAAiB,IAAI,SAAS;IAQ9B,mBAAmB,IAAI,SAAS;IAMhC,kBAAkB,IAAI,SAAS;IAO/B,OAAO,CAAC,qBAAqB;yCApNlB,wCAAwC;6CAAxC,wCAAwC;CA+NpD"}
@@ -1,9 +1,9 @@
1
- import { OnInit } from '@angular/core';
1
+ import { AfterViewInit, OnInit } from '@angular/core';
2
2
  import { AbstractControl, ControlValueAccessor, FormGroup, ValidationErrors, Validator } from '@angular/forms';
3
3
  import { DatapointAttributesFormValidationService } from './datapoint-attributes-form-validation.service';
4
4
  import { AXIS_TYPES, AxisTypes, CHART_LINE_TYPES, CHART_RENDER_TYPES, ChartLineTypes, ChartRenderTypes } from './datapoint-attributes.model';
5
5
  import * as i0 from "@angular/core";
6
- export declare class DatapointAttributesFormComponent implements ControlValueAccessor, Validator, OnInit {
6
+ export declare class DatapointAttributesFormComponent implements ControlValueAccessor, Validator, OnInit, AfterViewInit {
7
7
  private formValidations;
8
8
  selectableChartRenderTypes: ChartRenderTypes[];
9
9
  selectableChartLineTypes: ChartLineTypes[];
@@ -14,6 +14,8 @@ export declare class DatapointAttributesFormComponent implements ControlValueAcc
14
14
  showRedRange: boolean;
15
15
  showChart: boolean;
16
16
  showFormIfTemplateWasSelected: boolean;
17
+ /** Displays all errors even if the form was not touched yet. */
18
+ showErrorsImmediately: boolean;
17
19
  formGroup: FormGroup;
18
20
  range: FormGroup;
19
21
  yellowRange: FormGroup;
@@ -34,6 +36,7 @@ export declare class DatapointAttributesFormComponent implements ControlValueAcc
34
36
  showChartForm: boolean;
35
37
  constructor(formValidations: DatapointAttributesFormValidationService);
36
38
  ngOnInit(): void;
39
+ ngAfterViewInit(): void;
37
40
  validate(_control: AbstractControl): ValidationErrors;
38
41
  writeValue(obj: any): void;
39
42
  registerOnChange(fn: any): void;
@@ -46,6 +49,6 @@ export declare class DatapointAttributesFormComponent implements ControlValueAcc
46
49
  private filterLineTypes;
47
50
  private filterAxisTypes;
48
51
  static ɵfac: i0.ɵɵFactoryDeclaration<DatapointAttributesFormComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<DatapointAttributesFormComponent, "c8y-datapoint-attributes-form", never, { "selectableChartRenderTypes": { "alias": "selectableChartRenderTypes"; "required": false; }; "selectableChartLineTypes": { "alias": "selectableChartLineTypes"; "required": false; }; "selectableAxisTypes": { "alias": "selectableAxisTypes"; "required": false; }; "showTarget": { "alias": "showTarget"; "required": false; }; "showRange": { "alias": "showRange"; "required": false; }; "showYellowRange": { "alias": "showYellowRange"; "required": false; }; "showRedRange": { "alias": "showRedRange"; "required": false; }; "showChart": { "alias": "showChart"; "required": false; }; "showFormIfTemplateWasSelected": { "alias": "showFormIfTemplateWasSelected"; "required": false; }; }, {}, never, never, false, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatapointAttributesFormComponent, "c8y-datapoint-attributes-form", never, { "selectableChartRenderTypes": { "alias": "selectableChartRenderTypes"; "required": false; }; "selectableChartLineTypes": { "alias": "selectableChartLineTypes"; "required": false; }; "selectableAxisTypes": { "alias": "selectableAxisTypes"; "required": false; }; "showTarget": { "alias": "showTarget"; "required": false; }; "showRange": { "alias": "showRange"; "required": false; }; "showYellowRange": { "alias": "showYellowRange"; "required": false; }; "showRedRange": { "alias": "showRedRange"; "required": false; }; "showChart": { "alias": "showChart"; "required": false; }; "showFormIfTemplateWasSelected": { "alias": "showFormIfTemplateWasSelected"; "required": false; }; "showErrorsImmediately": { "alias": "showErrorsImmediately"; "required": false; }; }, {}, never, never, false, never>;
50
53
  }
51
54
  //# sourceMappingURL=datapoint-attributes-form.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-attributes-form.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,SAAS,EAGT,gBAAgB,EAChB,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,wCAAwC,EAAE,MAAM,gDAAgD,CAAC;AAC1G,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;;AAEtC,qBAgBa,gCAAiC,YAAW,oBAAoB,EAAE,SAAS,EAAE,MAAM;IA8BlF,OAAO,CAAC,eAAe;IA7B1B,0BAA0B,EAAE,gBAAgB,EAAE,CAAM;IACpD,wBAAwB,EAAE,cAAc,EAAE,CAAM;IAChD,mBAAmB,EAAE,SAAS,EAAE,CAAM;IACtC,UAAU,UAAQ;IAClB,SAAS,UAAQ;IACjB,eAAe,UAAQ;IACvB,YAAY,UAAQ;IACpB,SAAS,UAAQ;IACjB,6BAA6B,UAAS;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAM;IACnB,kBAAkB,EAAE,KAAK,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAkC;IAChG,gBAAgB,EAAE,KAAK,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAgC;IAC1F,UAAU,EAAE,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAA0B;IAExE,6BAA6B,EAAE;QAC7B,CAAC,SAAS,EAAE,MAAM,GAAG;YACnB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;SACnC,CAAC;KACH,CAAM;IACP,4BAA4B,UAAQ;IACpC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;gBAEH,eAAe,EAAE,wCAAwC;IAK7E,QAAQ,IAAI,IAAI;IAKhB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB;IAOrD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAe1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAS/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAO3C,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;yCAhIZ,gCAAgC;2CAAhC,gCAAgC;CAuI5C"}
1
+ {"version":3,"file":"datapoint-attributes-form.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgC,MAAM,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,SAAS,EAGT,gBAAgB,EAChB,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,wCAAwC,EAAE,MAAM,gDAAgD,CAAC;AAC1G,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;;AAEtC,qBAgBa,gCACX,YAAW,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa;IAiCrD,OAAO,CAAC,eAAe;IA/B1B,0BAA0B,EAAE,gBAAgB,EAAE,CAAM;IACpD,wBAAwB,EAAE,cAAc,EAAE,CAAM;IAChD,mBAAmB,EAAE,SAAS,EAAE,CAAM;IACtC,UAAU,UAAQ;IAClB,SAAS,UAAQ;IACjB,eAAe,UAAQ;IACvB,YAAY,UAAQ;IACpB,SAAS,UAAQ;IACjB,6BAA6B,UAAS;IAC/C,gEAAgE;IACvD,qBAAqB,UAAS;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAM;IACnB,kBAAkB,EAAE,KAAK,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAkC;IAChG,gBAAgB,EAAE,KAAK,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAgC;IAC1F,UAAU,EAAE,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAA0B;IAExE,6BAA6B,EAAE;QAC7B,CAAC,SAAS,EAAE,MAAM,GAAG;YACnB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;SACnC,CAAC;KACH,CAAM;IACP,4BAA4B,UAAQ;IACpC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;gBAEH,eAAe,EAAE,wCAAwC;IAK7E,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,IAAI;IAMvB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB;IAOrD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAe1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAS/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAO3C,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;yCA1IZ,gCAAgC;2CAAhC,gCAAgC;CAiJ5C"}
@@ -200,26 +200,13 @@ export class DatapointLibraryDetailsComponent {
200
200
  }, { validators: [C8yValidators.minMaxValidator(), C8yValidators.requireBothMinAndMax()] });
201
201
  return this.formBuilder.group({
202
202
  color: ['', [Validators.required, Validators.minLength(4)]],
203
- label: ['', [Validators.required, Validators.minLength(1), Validators.maxLength(120)]],
203
+ label: ['', [Validators.required, Validators.minLength(1)]],
204
204
  description: ['', []],
205
205
  fragment: [
206
206
  '',
207
- [
208
- Validators.required,
209
- Validators.minLength(1),
210
- Validators.maxLength(120),
211
- Validators.pattern(/^[^.]*$/)
212
- ]
213
- ],
214
- series: [
215
- '',
216
- [
217
- Validators.required,
218
- Validators.minLength(1),
219
- Validators.maxLength(120),
220
- Validators.pattern(/^[^.]*$/)
221
- ]
207
+ [Validators.required, Validators.minLength(1), Validators.pattern(/^[^.]*$/)]
222
208
  ],
209
+ series: ['', [Validators.required, Validators.minLength(1), Validators.pattern(/^[^.]*$/)]],
223
210
  range: this.range,
224
211
  unit: [undefined, []],
225
212
  target: [undefined, []],
@@ -258,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
258
245
  type: Inject,
259
246
  args: [DATAPOINT_LIBRARY_CONFIG]
260
247
  }] }] });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnktZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtbGlicmFyeS9kZXRhaWxzL2RhdGFwb2ludC1saWJyYXJ5LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZGF0YXBvaW50LWxpYnJhcnkvZGV0YWlscy9kYXRhcG9pbnQtbGlicmFyeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN6QixNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLGdDQUFnQztJQWEzQyxZQUNVLGNBQThCLEVBQzlCLFNBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxTQUEyQixFQUMzQixZQUEwQixFQUMxQixNQUE4QixFQUM5Qix3QkFBa0QsRUFDTCxNQUErQjtRQVQ1RSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQXdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDTCxXQUFNLEdBQU4sTUFBTSxDQUF5QjtRQXRCdEYsU0FBSSxHQUFHLHNCQUFzQixDQUFDO1FBTTlCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFnQmYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNkLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhELE1BQU0sRUFBRSxHQUE0QjtZQUNsQyxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ3pDLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGtMQUFrTDtnQkFDbEwsMEdBQTBHO2dCQUMxRyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzNCLEVBQUUsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsQ0FBQztZQUNELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDakIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3RFLHdCQUF3QixFQUFFLElBQUk7Z0JBQzlCLHdCQUF3QixFQUFFLElBQUk7Z0JBQzlCLGtCQUFrQixFQUFFLEtBQUs7YUFDMUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQ3hCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtvQkFDNUIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO29CQUN4QixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7b0JBQ3RCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztpQkFDdkIsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osZUFBZTtRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxlQUFlLENBQUMsWUFBNEI7UUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsTUFBTSxFQUNKLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLElBQUksRUFDSixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLFdBQVcsRUFDWCxXQUFXLEVBQ1gsR0FBRyxFQUNILEdBQUcsRUFDSixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDeEIsUUFBUTtZQUNSLE1BQU07WUFDTixXQUFXO1lBQ1gsSUFBSTtZQUNKLE1BQU07WUFDTixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7WUFDbkIsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO1lBQ3pELFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtZQUNoRCxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sNkJBQTZCLENBQUMsU0FBYztRQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQ2hGLE9BQU87WUFDTCxRQUFRO1lBQ1IsTUFBTTtZQUNOLFdBQVc7WUFDWCxJQUFJO1lBQ0osTUFBTTtZQUNOLEtBQUs7WUFDTCxLQUFLO1lBQ0wsY0FBYyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUM7WUFDakQsY0FBYyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUM7WUFDakQsV0FBVyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO1lBQzNDLFdBQVcsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQztZQUMzQyxHQUFHLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUM7WUFDaEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO1NBQ2pDLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFVO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FDVCxRQUFRLElBQUksTUFBTTtZQUNoQixDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsT0FBTyxNQUFNLEVBQUUsQ0FBQztZQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakUsTUFBTSxlQUFlLEdBQUc7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLEtBQUs7Z0JBQ0wsUUFBUTtnQkFDUixNQUFNO2dCQUNOLEtBQUs7YUFDTjtZQUNELFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsK0JBQStCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUN0RSxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBRWpGLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDM0IsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVU7UUFDN0IsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FDakM7WUFDRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7U0FDckIsRUFDRCxFQUFFLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsRUFBRSxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQ3hGLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUNwQztZQUNFLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDcEIsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztTQUNyQixFQUNELEVBQUUsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FDeEYsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQ3ZDO1lBQ0UsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNwQixHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1NBQ3JCLEVBQ0QsRUFBRSxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLEVBQUUsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUN4RixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FDM0I7WUFDRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDckIsUUFBUSxFQUFFO2dCQUNSLEVBQUU7Z0JBQ0Y7b0JBQ0UsVUFBVSxDQUFDLFFBQVE7b0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDekIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQzlCO2FBQ0Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sRUFBRTtnQkFDRjtvQkFDRSxVQUFVLENBQUMsUUFBUTtvQkFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUN6QixVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztpQkFDOUI7YUFDRjtZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsK0JBQStCLEVBQUUsRUFBRSxDQUFDO1NBQ2hFLEVBQ0Q7WUFDRSxVQUFVLEVBQUU7Z0JBQ1YsYUFBYSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7Z0JBQ3pDLGFBQWEsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO2dCQUN6QyxhQUFhLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDO2dCQUM1QyxhQUFhLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDO2dCQUM1QyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzthQUNwQztTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFLO1FBQzVCLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs4R0FoUlUsZ0NBQWdDLHVTQXVCckIsd0JBQXdCO2tHQXZCbkMsZ0NBQWdDLHlGQzVCN0MsNDFaQXdWQSwyQ0Q5VFksVUFBVSxteEZBQUUsWUFBWSw4QkFBRSxhQUFhLDhWQUFFLGFBQWEsa2tCQUFFLHVCQUF1Qjs7MkZBRTlFLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSwrQkFBK0IsY0FFN0IsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixDQUFDOzswQkF5QnZGLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQ29yZU1vZHVsZSwgZ2V0dGV4dCwgSHVtYW5pemVQaXBlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnRMaWJyYXJ5T3B0aW9ucyxcbiAgREFUQVBPSU5UX0xJQlJBUllfQ09ORklHLFxuICBwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LWxpYnJhcnkvbW9kZWwnO1xuaW1wb3J0IHsgQzh5VmFsaWRhdG9ycywgQ29sb3JTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRGF0YXBvaW50UGFyc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LWxpYnJhcnkvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50U2VsZWN0b3JNb2R1bGUsXG4gIERhdGFwb2ludFNlbGVjdG9yU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtbGlicmFyeS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludC1saWJyYXJ5LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgUm91dGVyTW9kdWxlLCBQb3BvdmVyTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHBhdGggPSBwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5O1xuICBmb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnRbJ2luaXRGb3JtJ10+O1xuICByYW5nZTogRm9ybUdyb3VwO1xuICByZWRSYW5nZTogRm9ybUdyb3VwO1xuICB5ZWxsb3dSYW5nZTogRm9ybUdyb3VwO1xuICBkYXRhcG9pbnQ6IElNYW5hZ2VkT2JqZWN0O1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuXG4gIHJhbmdlQ29uZmlnID0ge307XG5cbiAgcm91dGVTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2xvclNlcnZpY2U6IENvbG9yU2VydmljZSxcbiAgICBwcml2YXRlIHBhcnNlcjogRGF0YXBvaW50UGFyc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFwb2ludFNlbGVjdG9yU2VydmljZTogRGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQVBPSU5UX0xJQlJBUllfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBEYXRhcG9pbnRMaWJyYXJ5T3B0aW9uc1xuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVTdWIgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmVudC5kYXRhLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMubG9hZChkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlU3ViKSB7XG4gICAgICB0aGlzLnJvdXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZSh2YWx1ZSkge1xuICAgIGNvbnN0IGtwaVZhbHVlcyA9IHRoaXMuZXh0cmFjdEtwaVZhbHVlc0Zyb21Gb3JtVmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IGtwaSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGF0YXBvaW50Py5jOHlfS3BpIHx8IHt9LCBrcGlWYWx1ZXMpO1xuICAgIGNvbnN0IGNsZWFuZWRVcEtwaSA9IHRoaXMucmVtb3ZlTnVsbFZhbHVlcyhrcGkpO1xuXG4gICAgY29uc3QgbW86IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgYzh5X0twaTogY2xlYW5lZFVwS3BpLFxuICAgICAgYzh5X0dsb2JhbDogdmFsdWUuYzh5X0dsb2JhbCA/IHt9IDogbnVsbFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRhdGFwb2ludD8uaWQpIHtcbiAgICAgICAgbW8uaWQgPSB0aGlzLmRhdGFwb2ludC5pZDtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKG1vKTtcbiAgICAgICAgdGhpcy5kYXRhcG9pbnRVcGRhdGUocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zYXZlU3VjY2VzcyhnZXR0ZXh0KCdEYXRhIHBvaW50IGxpYnJhcnkgZW50cnknKSkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGR1cmluZyBtYW5hZ2VkT2JqZWN0IGNyZWF0aW9uIChQT1NUKSBhIGZyYWdtZW50IHdpdGggdGhlIHZhbHVlIG51bGwgaXMgYWN0dWFsbHkgYmVpbmcgY3JlYXRlZCBhbmQgc3RvcmVkIHRvIHRoZSBEQiBjb21wYXJlZCB0byBhbiB1cGRhdGUgKFBVVCkgd2hpY2ggd291bGQgcmVtb3ZlIHRoZSBmcmFnbWVudC5cbiAgICAgICAgLy8gYXMgd2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoYXQgZnJhZ21lbnQgc3RvcmVkIGluIERCIChpZiBzZXQgdG8gbnVsbCksIHdlIHdpbGwganVzdCBzZXQgaXQgdG8gdW5kZWZpbmVkLlxuICAgICAgICBpZiAobW8uYzh5X0dsb2JhbCA9PT0gbnVsbCkge1xuICAgICAgICAgIG1vLmM4eV9HbG9iYWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuY3JlYXRlKG1vKTtcbiAgICAgICAgdGhpcy5kYXRhcG9pbnRVcGRhdGUocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5jcmVhdGVTdWNjZXNzKGdldHRleHQoJ0RhdGEgcG9pbnQgbGlicmFyeSBlbnRyeScpKSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5uYXZpZ2F0ZUJhY2tUb0xpc3QoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm5hdmlnYXRlQmFja1RvTGlzdCgpO1xuICB9XG5cbiAgZm9ybUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrcGlWYWx1ZXMgPSB0aGlzLmV4dHJhY3RLcGlWYWx1ZXNGcm9tRm9ybVZhbHVlKHRoaXMuZm9ybUdyb3VwLnZhbHVlKTtcbiAgICB0aGlzLnJhbmdlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7IG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfSwga3BpVmFsdWVzKTtcbiAgfVxuXG4gIGFzeW5jIHBpY2tEYXRhcG9pbnQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGFwb2ludHMgPSBhd2FpdCB0aGlzLmRhdGFwb2ludFNlbGVjdG9yU2VydmljZS5zZWxlY3REYXRhUG9pbnRzKHtcbiAgICAgICAgZmluaXNoV2l0aEZpcnN0U2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICBpZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXM6IHRydWUsXG4gICAgICAgIGd1ZXNzRGF0YXBvaW50VW5pdDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKGRhdGFwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGFwb2ludCA9IGRhdGFwb2ludHNbMF07XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGZyYWdtZW50OiBkYXRhcG9pbnQuZnJhZ21lbnQsXG4gICAgICAgICAgc2VyaWVzOiBkYXRhcG9pbnQuc2VyaWVzLFxuICAgICAgICAgIGNvbG9yOiBkYXRhcG9pbnQuY29sb3IsXG4gICAgICAgICAgbGFiZWw6IGRhdGFwb2ludC5sYWJlbFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlQmFja1RvTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhUb0RhdGFwb2ludExpYnJhcnldKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0YXBvaW50VXBkYXRlKHRtcERhdGFwb2ludDogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBkYXRhcG9pbnQgPSB0aGlzLnBhcnNlci5wYXJzZURhdGFwb2ludCh0bXBEYXRhcG9pbnQpO1xuICAgIHRoaXMuZGF0YXBvaW50ID0gZGF0YXBvaW50O1xuICAgIGNvbnN0IHtcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICB1bml0LFxuICAgICAgdGFyZ2V0LFxuICAgICAgbGFiZWwsXG4gICAgICBjb2xvcixcbiAgICAgIHllbGxvd1JhbmdlTWluLFxuICAgICAgeWVsbG93UmFuZ2VNYXgsXG4gICAgICByZWRSYW5nZU1pbixcbiAgICAgIHJlZFJhbmdlTWF4LFxuICAgICAgbWluLFxuICAgICAgbWF4XG4gICAgfSA9IGRhdGFwb2ludC5jOHlfS3BpO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgZnJhZ21lbnQsXG4gICAgICBzZXJpZXMsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHVuaXQsXG4gICAgICB0YXJnZXQsXG4gICAgICBsYWJlbCxcbiAgICAgIGNvbG9yLFxuICAgICAgcmFuZ2U6IHsgbWluLCBtYXggfSxcbiAgICAgIHllbGxvd1JhbmdlOiB7IG1pbjogeWVsbG93UmFuZ2VNaW4sIG1heDogeWVsbG93UmFuZ2VNYXggfSxcbiAgICAgIHJlZFJhbmdlOiB7IG1pbjogcmVkUmFuZ2VNaW4sIG1heDogcmVkUmFuZ2VNYXggfSxcbiAgICAgIGM4eV9HbG9iYWw6ICEhZGF0YXBvaW50LmM4eV9HbG9iYWxcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1DaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdEtwaVZhbHVlc0Zyb21Gb3JtVmFsdWUoZm9ybVZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCB7IGZyYWdtZW50LCBzZXJpZXMsIGRlc2NyaXB0aW9uLCB1bml0LCB0YXJnZXQsIGxhYmVsLCBjb2xvciB9ID0gZm9ybVZhbHVlO1xuICAgIHJldHVybiB7XG4gICAgICBmcmFnbWVudCxcbiAgICAgIHNlcmllcyxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgdW5pdCxcbiAgICAgIHRhcmdldCxcbiAgICAgIGxhYmVsLFxuICAgICAgY29sb3IsXG4gICAgICB5ZWxsb3dSYW5nZU1pbjogZ2V0KGZvcm1WYWx1ZSwgJ3llbGxvd1JhbmdlLm1pbicpLFxuICAgICAgeWVsbG93UmFuZ2VNYXg6IGdldChmb3JtVmFsdWUsICd5ZWxsb3dSYW5nZS5tYXgnKSxcbiAgICAgIHJlZFJhbmdlTWluOiBnZXQoZm9ybVZhbHVlLCAncmVkUmFuZ2UubWluJyksXG4gICAgICByZWRSYW5nZU1heDogZ2V0KGZvcm1WYWx1ZSwgJ3JlZFJhbmdlLm1heCcpLFxuICAgICAgbWluOiBnZXQoZm9ybVZhbHVlLCAncmFuZ2UubWluJyksXG4gICAgICBtYXg6IGdldChmb3JtVmFsdWUsICdyYW5nZS5tYXgnKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWQoZGF0YTogRGF0YSkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIGNvbnN0IHsgZnJhZ21lbnQsIHNlcmllcyB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICBjb25zdCBodW1hbml6ZSA9IG5ldyBIdW1hbml6ZVBpcGUoKTtcbiAgICBjb25zdCBsYWJlbCA9XG4gICAgICBmcmFnbWVudCAmJiBzZXJpZXNcbiAgICAgICAgPyBodW1hbml6ZS50cmFuc2Zvcm0oYCR7ZnJhZ21lbnR9ID0+ICR7c2VyaWVzfWApXG4gICAgICAgIDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChnZXR0ZXh0KCdOZXcgZGF0YSBwb2ludCB0ZW1wbGF0ZScpKTtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb2xvciA9IGF3YWl0IHRoaXMuY29sb3JTZXJ2aWNlLmdlbmVyYXRlQ29sb3IoY3VycmVudERhdGUpO1xuXG4gICAgY29uc3QgY29udGV4dEZhbGxiYWNrID0ge1xuICAgICAgYzh5X0twaToge1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgIHNlcmllcyxcbiAgICAgICAgY29sb3JcbiAgICAgIH0sXG4gICAgICBjOHlfR2xvYmFsOiAhdGhpcy5jb25maWc/LmRvTm90QWRkR2xvYmFsRnJhZ21lbnRCeURlZmF1bHQgPyB7fSA6IG51bGxcbiAgICB9O1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gdGhpcy5pc0NvbnRleHRTZXQoZGF0YSkgPyBkYXRhLmNvbnRleHREYXRhIDogY29udGV4dEZhbGxiYWNrO1xuXG4gICAgY29uc3QgeyBpZCB9ID0gY29udGV4dERhdGE7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFVwZGF0ZSgoYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKGlkKSkuZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YXBvaW50VXBkYXRlKGNvbnRleHREYXRhKTtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDb250ZXh0U2V0KGRhdGE6IERhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0YSAmJiAhaXNFbXB0eShkYXRhLmNvbnRleHREYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5yYW5nZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1pbjogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICBtYXg6IFt1bmRlZmluZWQsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV0gfVxuICAgICk7XG4gICAgdGhpcy5yZWRSYW5nZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1pbjogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICBtYXg6IFt1bmRlZmluZWQsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV0gfVxuICAgICk7XG4gICAgdGhpcy55ZWxsb3dSYW5nZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1pbjogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICBtYXg6IFt1bmRlZmluZWQsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV0gfVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIGNvbG9yOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg0KV1dLFxuICAgICAgICBsYWJlbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldXSxcbiAgICAgICAgZGVzY3JpcHRpb246IFsnJywgW11dLFxuICAgICAgICBmcmFnbWVudDogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCksXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bXi5dKiQvKVxuICAgICAgICAgIF1cbiAgICAgICAgXSxcbiAgICAgICAgc2VyaWVzOiBbXG4gICAgICAgICAgJycsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXlteLl0qJC8pXG4gICAgICAgICAgXVxuICAgICAgICBdLFxuICAgICAgICByYW5nZTogdGhpcy5yYW5nZSxcbiAgICAgICAgdW5pdDogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICB0YXJnZXQ6IFt1bmRlZmluZWQsIFtdXSxcbiAgICAgICAgcmVkUmFuZ2U6IHRoaXMucmVkUmFuZ2UsXG4gICAgICAgIHllbGxvd1JhbmdlOiB0aGlzLnllbGxvd1JhbmdlLFxuICAgICAgICBjOHlfR2xvYmFsOiBbIXRoaXMuY29uZmlnPy5kb05vdEFkZEdsb2JhbEZyYWdtZW50QnlEZWZhdWx0LCBbXV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCdyZWRSYW5nZS5taW4nKSxcbiAgICAgICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCdyZWRSYW5nZS5tYXgnKSxcbiAgICAgICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCd5ZWxsb3dSYW5nZS5taW4nKSxcbiAgICAgICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCd5ZWxsb3dSYW5nZS5tYXgnKSxcbiAgICAgICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCd0YXJnZXQnKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTnVsbFZhbHVlcyh2YWx1ZSkge1xuICAgIC8vIHJlbW92ZSBudWxsIHZhbHVlcyBiZWZvcmUgc2VuZGluZyBkYXRhIHRvIGJhY2tlbmRcbiAgICBjb25zdCBjbGVhbmVkdXBWYWx1ZXMgPSBPYmplY3QuYXNzaWduKHt9LCB2YWx1ZSk7XG4gICAgT2JqZWN0LmtleXMoY2xlYW5lZHVwVmFsdWVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY2xlYW5lZHVwVmFsdWVzW2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgZGVsZXRlIGNsZWFuZWR1cFZhbHVlc1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjbGVhbmVkdXBWYWx1ZXM7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGUgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gIHt7IGZvcm1Hcm91cC52YWx1ZT8ubGFiZWwgfX1cbiAgPHNtYWxsICpuZ0lmPVwiZm9ybUdyb3VwLnZhbHVlPy5mcmFnbWVudCAmJiBmb3JtR3JvdXAudmFsdWU/LnNlcmllc1wiPlxuICAgIHt7IGZvcm1Hcm91cC52YWx1ZT8uZnJhZ21lbnQgfX0gLyB7eyBmb3JtR3JvdXAudmFsdWU/LnNlcmllcyB9fVxuICA8L3NtYWxsPlxuPC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LXRvb2xzJ1wiXG4gICAgW2xhYmVsXT1cIidDb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgIFtsYWJlbF09XCInRGF0YSBwb2ludCBsaWJyYXJ5JyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwicGF0aFwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgIFtsYWJlbF09XCJmb3JtR3JvdXAudmFsdWU/LmxhYmVsXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxmb3JtXG4gIChuZ1N1Ym1pdCk9XCJmb3JtR3JvdXAudmFsaWQgJiYgc2F2ZShmb3JtR3JvdXAudmFsdWUpXCJcbiAgKGNoYW5nZSk9XCJmb3JtQ2hhbmdlKClcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gIGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGNhcmQtLWdyaWQgZ3JpZF9fY29sLS02LTYtLW1kIGdyaWRfX3Jvdy0tZml0LWF1dG9cIlxuICBub3ZhbGlkYXRlXG4+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBsYXJnZS1wYWRkaW5nIHNlcGFyYXRvciBncmlkX19jb2wtLWZ1bGxzcGFuXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cbiAgICAgIHt7IGZvcm1Hcm91cC52YWx1ZT8ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nXCIgY2xhc3M9XCJkLWNvbnRlbnRzXCI+XG4gICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBiZy1sZXZlbC0wIGZsZXgtZ3Jvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgbGFyZ2UtcGFkZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5Db2xvcjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1wb2ludC1jb2xvciBmb3JtLWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1jb2xvcnBpY2tlclwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ29sb3IgcGlja2VyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImZvcm1Hcm91cC52YWx1ZT8uY29sb3JcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJmbGV4LWdyb3cgcC1sLThcIj5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TGFiZWw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICBuYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4gVGVtcGVyYXR1cmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgICAgW3Nob3ddPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy5sYWJlbD8udG91Y2hlZCAmJiBmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsPy5lcnJvcnNcIlxuICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIEFtYmllbnQgVGVtcGVyYXR1cmUgaW4gQ2Vsc2l1cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBnYXAtOFwiPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5GcmFnbWVudDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuYW1lPVwiZnJhZ21lbnRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmcmFnbWVudFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAnYzh5X1RlbXBlcmF0dXJlJyB9XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgICAgW3Nob3ddPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy5mcmFnbWVudD8udG91Y2hlZCAmJiBmb3JtR3JvdXAuY29udHJvbHM/LmZyYWdtZW50Py5lcnJvcnNcIlxuICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+U2VyaWVzPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlcmllc1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJzZXJpZXNcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ1QnIH1cIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHM/LnNlcmllcz8udG91Y2hlZCAmJiBmb3JtR3JvdXAuY29udHJvbHM/LnNlcmllcz8uZXJyb3JzXCJcbiAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LW5vLWdyb3dcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgcC1sLTggcC1yLThcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicGlja0RhdGFwb2ludCgpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidMb2FkIGZyYWdtZW50IGFuZCBzZXJpZXMgZnJvbSBhbiBleGlzdGluZyBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidMb2FkIGZyYWdtZW50IGFuZCBzZXJpZXMgZnJvbSBhbiBleGlzdGluZyBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJleWVkcm9wcGVyXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImNvbmZpZz8uc2hvd0NoZWNrYm94Rm9yR2xvYmFsRnJhZ21lbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYzh5LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJjOHlfR2xvYmFsXCIgZm9ybUNvbnRyb2xOYW1lPVwiYzh5X0dsb2JhbFwiIHR5cGU9XCJjaGVja2JveFwiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5HbG9iYWxseSBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAnV2lsbCBtYWtlIHRoaXMgZW50cnkgYXZhaWxhYmxlIHRvIGFsbCB1c2VycyBvbiB0aGUgdGVuYW50IGlmIGNoZWNrZWQuJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgbGFyZ2UtcGFkZGluZ1wiPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgICAgICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5QcmV2aWV3PC9sZWdlbmQ+XG4gICAgICAgICAgPGM4eS1yYW5nZS1kaXNwbGF5IFtjb25maWddPVwicmFuZ2VDb25maWdcIiBjbGFzcz1cIm0tYi0xNiBkLWJsb2NrXCI+PC9jOHktcmFuZ2UtZGlzcGxheT5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgICAgICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5SYW5nZTwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBmb3JtR3JvdXBOYW1lPVwicmFuZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMCB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXMgW3Nob3ddPVwicmFuZ2U/LnRvdWNoZWQgJiYgcmFuZ2UuY29udHJvbHM/Lm1pbj8uZXJyb3JzXCI+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NYXg8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMTAwIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJyYW5nZT8udG91Y2hlZCAmJiByYW5nZS5jb250cm9scz8ubWF4Py5lcnJvcnNcIj48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5Vbml0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1bml0XCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICfCukMnIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgW3Nob3ddPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy51bml0Py50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scz8udW5pdD8uZXJyb3JzXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LnRvdWNoZWQpICYmXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9scz8udGFyZ2V0Py5lcnJvcnNcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+VGFyZ2V0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDI1IH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgW3Nob3ddPVwiXG4gICAgICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldD8udG91Y2hlZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LmVycm9yc1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIiBmb3JtR3JvdXBOYW1lPVwieWVsbG93UmFuZ2VcIj5cbiAgICAgICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5ZZWxsb3cgcmFuZ2U8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6XG4gICAgICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNTAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICBbc2hvd109XCJcbiAgICAgICAgICAgICAgICAgICAgKHJhbmdlPy50b3VjaGVkIHx8IHllbGxvd1JhbmdlPy50b3VjaGVkKSAmJiB5ZWxsb3dSYW5nZS5jb250cm9scz8ubWluPy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnaGFzLWVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgKHJhbmdlPy50b3VjaGVkIHx8IHllbGxvd1JhbmdlPy50b3VjaGVkKSAmJiB5ZWxsb3dSYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk1heDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiA3NSB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgIFtzaG93XT1cIlxuICAgICAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIiBmb3JtR3JvdXBOYW1lPVwicmVkUmFuZ2VcIj5cbiAgICAgICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5SZWQgcmFuZ2U8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6XG4gICAgICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnaGFzLWVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgKHJhbmdlPy50b3VjaGVkIHx8IHJlZFJhbmdlPy50b3VjaGVkKSAmJiByZWRSYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk1heDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAxMDAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiXG4gICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3IgZ3JpZF9fY29sLS1mdWxsc3BhblwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCIgW3RpdGxlXT1cIidDYW5jZWwnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1mb3JtXCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgW3RpdGxlXT1cIidTYXZlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAqYzh5SWZBbGxvd2VkPVwiWydST0xFX0lOVkVOVE9SWV9BRE1JTicsICdST0xFX0lOVkVOVE9SWV9VUERBVEUnXTsgYWxsb3dBbnk6IHRydWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1Hcm91cC5pbnZhbGlkIHx8IGZvcm1Hcm91cC5wcmlzdGluZVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnktZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtbGlicmFyeS9kZXRhaWxzL2RhdGFwb2ludC1saWJyYXJ5LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZGF0YXBvaW50LWxpYnJhcnkvZGV0YWlscy9kYXRhcG9pbnQtbGlicmFyeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0Qs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Q0YsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFLO1FBQzVCLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs4R0FuUVUsZ0NBQWdDLHVTQXVCckIsd0JBQXdCO2tHQXZCbkMsZ0NBQWdDLHlGQzVCN0MsNDFaQXdWQSwyQ0Q5VFksVUFBVSxteEZBQUUsWUFBWSw4QkFBRSxhQUFhLDhWQUFFLGFBQWEsa2tCQUFFLHVCQUF1Qjs7MkZBRTlFLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSwrQkFBK0IsY0FFN0IsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixDQUFDOzswQkF5QnZGLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQ29yZU1vZHVsZSwgZ2V0dGV4dCwgSHVtYW5pemVQaXBlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnRMaWJyYXJ5T3B0aW9ucyxcbiAgREFUQVBPSU5UX0xJQlJBUllfQ09ORklHLFxuICBwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LWxpYnJhcnkvbW9kZWwnO1xuaW1wb3J0IHsgQzh5VmFsaWRhdG9ycywgQ29sb3JTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRGF0YXBvaW50UGFyc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LWxpYnJhcnkvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50U2VsZWN0b3JNb2R1bGUsXG4gIERhdGFwb2ludFNlbGVjdG9yU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtbGlicmFyeS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludC1saWJyYXJ5LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgUm91dGVyTW9kdWxlLCBQb3BvdmVyTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHBhdGggPSBwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5O1xuICBmb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnRbJ2luaXRGb3JtJ10+O1xuICByYW5nZTogRm9ybUdyb3VwO1xuICByZWRSYW5nZTogRm9ybUdyb3VwO1xuICB5ZWxsb3dSYW5nZTogRm9ybUdyb3VwO1xuICBkYXRhcG9pbnQ6IElNYW5hZ2VkT2JqZWN0O1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuXG4gIHJhbmdlQ29uZmlnID0ge307XG5cbiAgcm91dGVTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2xvclNlcnZpY2U6IENvbG9yU2VydmljZSxcbiAgICBwcml2YXRlIHBhcnNlcjogRGF0YXBvaW50UGFyc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFwb2ludFNlbGVjdG9yU2VydmljZTogRGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQVBPSU5UX0xJQlJBUllfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBEYXRhcG9pbnRMaWJyYXJ5T3B0aW9uc1xuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVTdWIgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmVudC5kYXRhLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMubG9hZChkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlU3ViKSB7XG4gICAgICB0aGlzLnJvdXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZSh2YWx1ZSkge1xuICAgIGNvbnN0IGtwaVZhbHVlcyA9IHRoaXMuZXh0cmFjdEtwaVZhbHVlc0Zyb21Gb3JtVmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IGtwaSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGF0YXBvaW50Py5jOHlfS3BpIHx8IHt9LCBrcGlWYWx1ZXMpO1xuICAgIGNvbnN0IGNsZWFuZWRVcEtwaSA9IHRoaXMucmVtb3ZlTnVsbFZhbHVlcyhrcGkpO1xuXG4gICAgY29uc3QgbW86IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgYzh5X0twaTogY2xlYW5lZFVwS3BpLFxuICAgICAgYzh5X0dsb2JhbDogdmFsdWUuYzh5X0dsb2JhbCA/IHt9IDogbnVsbFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRhdGFwb2ludD8uaWQpIHtcbiAgICAgICAgbW8uaWQgPSB0aGlzLmRhdGFwb2ludC5pZDtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKG1vKTtcbiAgICAgICAgdGhpcy5kYXRhcG9pbnRVcGRhdGUocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zYXZlU3VjY2VzcyhnZXR0ZXh0KCdEYXRhIHBvaW50IGxpYnJhcnkgZW50cnknKSkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGR1cmluZyBtYW5hZ2VkT2JqZWN0IGNyZWF0aW9uIChQT1NUKSBhIGZyYWdtZW50IHdpdGggdGhlIHZhbHVlIG51bGwgaXMgYWN0dWFsbHkgYmVpbmcgY3JlYXRlZCBhbmQgc3RvcmVkIHRvIHRoZSBEQiBjb21wYXJlZCB0byBhbiB1cGRhdGUgKFBVVCkgd2hpY2ggd291bGQgcmVtb3ZlIHRoZSBmcmFnbWVudC5cbiAgICAgICAgLy8gYXMgd2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoYXQgZnJhZ21lbnQgc3RvcmVkIGluIERCIChpZiBzZXQgdG8gbnVsbCksIHdlIHdpbGwganVzdCBzZXQgaXQgdG8gdW5kZWZpbmVkLlxuICAgICAgICBpZiAobW8uYzh5X0dsb2JhbCA9PT0gbnVsbCkge1xuICAgICAgICAgIG1vLmM4eV9HbG9iYWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuY3JlYXRlKG1vKTtcbiAgICAgICAgdGhpcy5kYXRhcG9pbnRVcGRhdGUocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5jcmVhdGVTdWNjZXNzKGdldHRleHQoJ0RhdGEgcG9pbnQgbGlicmFyeSBlbnRyeScpKSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5uYXZpZ2F0ZUJhY2tUb0xpc3QoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm5hdmlnYXRlQmFja1RvTGlzdCgpO1xuICB9XG5cbiAgZm9ybUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrcGlWYWx1ZXMgPSB0aGlzLmV4dHJhY3RLcGlWYWx1ZXNGcm9tRm9ybVZhbHVlKHRoaXMuZm9ybUdyb3VwLnZhbHVlKTtcbiAgICB0aGlzLnJhbmdlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7IG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfSwga3BpVmFsdWVzKTtcbiAgfVxuXG4gIGFzeW5jIHBpY2tEYXRhcG9pbnQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGFwb2ludHMgPSBhd2FpdCB0aGlzLmRhdGFwb2ludFNlbGVjdG9yU2VydmljZS5zZWxlY3REYXRhUG9pbnRzKHtcbiAgICAgICAgZmluaXNoV2l0aEZpcnN0U2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICBpZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXM6IHRydWUsXG4gICAgICAgIGd1ZXNzRGF0YXBvaW50VW5pdDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKGRhdGFwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGFwb2ludCA9IGRhdGFwb2ludHNbMF07XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGZyYWdtZW50OiBkYXRhcG9pbnQuZnJhZ21lbnQsXG4gICAgICAgICAgc2VyaWVzOiBkYXRhcG9pbnQuc2VyaWVzLFxuICAgICAgICAgIGNvbG9yOiBkYXRhcG9pbnQuY29sb3IsXG4gICAgICAgICAgbGFiZWw6IGRhdGFwb2ludC5sYWJlbFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlQmFja1RvTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhUb0RhdGFwb2ludExpYnJhcnldKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0YXBvaW50VXBkYXRlKHRtcERhdGFwb2ludDogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBkYXRhcG9pbnQgPSB0aGlzLnBhcnNlci5wYXJzZURhdGFwb2ludCh0bXBEYXRhcG9pbnQpO1xuICAgIHRoaXMuZGF0YXBvaW50ID0gZGF0YXBvaW50O1xuICAgIGNvbnN0IHtcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICB1bml0LFxuICAgICAgdGFyZ2V0LFxuICAgICAgbGFiZWwsXG4gICAgICBjb2xvcixcbiAgICAgIHllbGxvd1JhbmdlTWluLFxuICAgICAgeWVsbG93UmFuZ2VNYXgsXG4gICAgICByZWRSYW5nZU1pbixcbiAgICAgIHJlZFJhbmdlTWF4LFxuICAgICAgbWluLFxuICAgICAgbWF4XG4gICAgfSA9IGRhdGFwb2ludC5jOHlfS3BpO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgZnJhZ21lbnQsXG4gICAgICBzZXJpZXMsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHVuaXQsXG4gICAgICB0YXJnZXQsXG4gICAgICBsYWJlbCxcbiAgICAgIGNvbG9yLFxuICAgICAgcmFuZ2U6IHsgbWluLCBtYXggfSxcbiAgICAgIHllbGxvd1JhbmdlOiB7IG1pbjogeWVsbG93UmFuZ2VNaW4sIG1heDogeWVsbG93UmFuZ2VNYXggfSxcbiAgICAgIHJlZFJhbmdlOiB7IG1pbjogcmVkUmFuZ2VNaW4sIG1heDogcmVkUmFuZ2VNYXggfSxcbiAgICAgIGM4eV9HbG9iYWw6ICEhZGF0YXBvaW50LmM4eV9HbG9iYWxcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1DaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdEtwaVZhbHVlc0Zyb21Gb3JtVmFsdWUoZm9ybVZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCB7IGZyYWdtZW50LCBzZXJpZXMsIGRlc2NyaXB0aW9uLCB1bml0LCB0YXJnZXQsIGxhYmVsLCBjb2xvciB9ID0gZm9ybVZhbHVlO1xuICAgIHJldHVybiB7XG4gICAgICBmcmFnbWVudCxcbiAgICAgIHNlcmllcyxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgdW5pdCxcbiAgICAgIHRhcmdldCxcbiAgICAgIGxhYmVsLFxuICAgICAgY29sb3IsXG4gICAgICB5ZWxsb3dSYW5nZU1pbjogZ2V0KGZvcm1WYWx1ZSwgJ3llbGxvd1JhbmdlLm1pbicpLFxuICAgICAgeWVsbG93UmFuZ2VNYXg6IGdldChmb3JtVmFsdWUsICd5ZWxsb3dSYW5nZS5tYXgnKSxcbiAgICAgIHJlZFJhbmdlTWluOiBnZXQoZm9ybVZhbHVlLCAncmVkUmFuZ2UubWluJyksXG4gICAgICByZWRSYW5nZU1heDogZ2V0KGZvcm1WYWx1ZSwgJ3JlZFJhbmdlLm1heCcpLFxuICAgICAgbWluOiBnZXQoZm9ybVZhbHVlLCAncmFuZ2UubWluJyksXG4gICAgICBtYXg6IGdldChmb3JtVmFsdWUsICdyYW5nZS5tYXgnKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWQoZGF0YTogRGF0YSkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIGNvbnN0IHsgZnJhZ21lbnQsIHNlcmllcyB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICBjb25zdCBodW1hbml6ZSA9IG5ldyBIdW1hbml6ZVBpcGUoKTtcbiAgICBjb25zdCBsYWJlbCA9XG4gICAgICBmcmFnbWVudCAmJiBzZXJpZXNcbiAgICAgICAgPyBodW1hbml6ZS50cmFuc2Zvcm0oYCR7ZnJhZ21lbnR9ID0+ICR7c2VyaWVzfWApXG4gICAgICAgIDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChnZXR0ZXh0KCdOZXcgZGF0YSBwb2ludCB0ZW1wbGF0ZScpKTtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb2xvciA9IGF3YWl0IHRoaXMuY29sb3JTZXJ2aWNlLmdlbmVyYXRlQ29sb3IoY3VycmVudERhdGUpO1xuXG4gICAgY29uc3QgY29udGV4dEZhbGxiYWNrID0ge1xuICAgICAgYzh5X0twaToge1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgIHNlcmllcyxcbiAgICAgICAgY29sb3JcbiAgICAgIH0sXG4gICAgICBjOHlfR2xvYmFsOiAhdGhpcy5jb25maWc/LmRvTm90QWRkR2xvYmFsRnJhZ21lbnRCeURlZmF1bHQgPyB7fSA6IG51bGxcbiAgICB9O1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gdGhpcy5pc0NvbnRleHRTZXQoZGF0YSkgPyBkYXRhLmNvbnRleHREYXRhIDogY29udGV4dEZhbGxiYWNrO1xuXG4gICAgY29uc3QgeyBpZCB9ID0gY29udGV4dERhdGE7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFVwZGF0ZSgoYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKGlkKSkuZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YXBvaW50VXBkYXRlKGNvbnRleHREYXRhKTtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDb250ZXh0U2V0KGRhdGE6IERhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0YSAmJiAhaXNFbXB0eShkYXRhLmNvbnRleHREYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5yYW5nZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1pbjogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICBtYXg6IFt1bmRlZmluZWQsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV0gfVxuICAgICk7XG4gICAgdGhpcy5yZWRSYW5nZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1pbjogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICBtYXg6IFt1bmRlZmluZWQsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV0gfVxuICAgICk7XG4gICAgdGhpcy55ZWxsb3dSYW5nZSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIG1pbjogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICBtYXg6IFt1bmRlZmluZWQsIFtdXVxuICAgICAgfSxcbiAgICAgIHsgdmFsaWRhdG9yczogW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV0gfVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIGNvbG9yOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg0KV1dLFxuICAgICAgICBsYWJlbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSldXSxcbiAgICAgICAgZGVzY3JpcHRpb246IFsnJywgW11dLFxuICAgICAgICBmcmFnbWVudDogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW14uXSokLyldXG4gICAgICAgIF0sXG4gICAgICAgIHNlcmllczogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMucGF0dGVybigvXlteLl0qJC8pXV0sXG4gICAgICAgIHJhbmdlOiB0aGlzLnJhbmdlLFxuICAgICAgICB1bml0OiBbdW5kZWZpbmVkLCBbXV0sXG4gICAgICAgIHRhcmdldDogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgICByZWRSYW5nZTogdGhpcy5yZWRSYW5nZSxcbiAgICAgICAgeWVsbG93UmFuZ2U6IHRoaXMueWVsbG93UmFuZ2UsXG4gICAgICAgIGM4eV9HbG9iYWw6IFshdGhpcy5jb25maWc/LmRvTm90QWRkR2xvYmFsRnJhZ21lbnRCeURlZmF1bHQsIFtdXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdG9yczogW1xuICAgICAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3JlZFJhbmdlLm1pbicpLFxuICAgICAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3JlZFJhbmdlLm1heCcpLFxuICAgICAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3llbGxvd1JhbmdlLm1pbicpLFxuICAgICAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3llbGxvd1JhbmdlLm1heCcpLFxuICAgICAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3RhcmdldCcpXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVOdWxsVmFsdWVzKHZhbHVlKSB7XG4gICAgLy8gcmVtb3ZlIG51bGwgdmFsdWVzIGJlZm9yZSBzZW5kaW5nIGRhdGEgdG8gYmFja2VuZFxuICAgIGNvbnN0IGNsZWFuZWR1cFZhbHVlcyA9IE9iamVjdC5hc3NpZ24oe30sIHZhbHVlKTtcbiAgICBPYmplY3Qua2V5cyhjbGVhbmVkdXBWYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChjbGVhbmVkdXBWYWx1ZXNba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICBkZWxldGUgY2xlYW5lZHVwVmFsdWVzW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsZWFuZWR1cFZhbHVlcztcbiAgfVxufVxuIiwiPGM4eS10aXRsZSAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAge3sgZm9ybUdyb3VwLnZhbHVlPy5sYWJlbCB9fVxuICA8c21hbGwgKm5nSWY9XCJmb3JtR3JvdXAudmFsdWU/LmZyYWdtZW50ICYmIGZvcm1Hcm91cC52YWx1ZT8uc2VyaWVzXCI+XG4gICAge3sgZm9ybUdyb3VwLnZhbHVlPy5mcmFnbWVudCB9fSAvIHt7IGZvcm1Hcm91cC52YWx1ZT8uc2VyaWVzIH19XG4gIDwvc21hbGw+XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktdG9vbHMnXCJcbiAgICBbbGFiZWxdPVwiJ0NvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgW2xhYmVsXT1cIidEYXRhIHBvaW50IGxpYnJhcnknIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCJwYXRoXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgW2xhYmVsXT1cImZvcm1Hcm91cC52YWx1ZT8ubGFiZWxcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGZvcm1cbiAgKG5nU3VibWl0KT1cImZvcm1Hcm91cC52YWxpZCAmJiBzYXZlKGZvcm1Hcm91cC52YWx1ZSlcIlxuICAoY2hhbmdlKT1cImZvcm1DaGFuZ2UoKVwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgY2FyZC0tZ3JpZCBncmlkX19jb2wtLTYtNi0tbWQgZ3JpZF9fcm93LS1maXQtYXV0b1wiXG4gIG5vdmFsaWRhdGVcbj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGxhcmdlLXBhZGRpbmcgc2VwYXJhdG9yIGdyaWRfX2NvbC0tZnVsbHNwYW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxuICAgICAge3sgZm9ybUdyb3VwLnZhbHVlPy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBjbGFzcz1cImQtY29udGVudHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTAgZmxleC1ncm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkNvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLXBvaW50LWNvbG9yIGZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWNvbG9ycGlja2VyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDb2xvciBwaWNrZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZm9ybUdyb3VwLnZhbHVlPy5jb2xvclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZsZXgtZ3JvdyBwLWwtOFwiPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5MYWJlbDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiBUZW1wZXJhdHVyZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsPy50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scz8ubGFiZWw/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4gQW1iaWVudCBUZW1wZXJhdHVyZSBpbiBDZWxzaXVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIGdhcC04XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPkZyYWdtZW50PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJmcmFnbWVudFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZyYWdtZW50XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICdjOHlfVGVtcGVyYXR1cmUnIH1cIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHM/LmZyYWdtZW50Py50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scz8uZnJhZ21lbnQ/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5TZXJpZXM8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VyaWVzXCJcbiAgICAgICAgICAgICAgbmFtZT1cInNlcmllc1wiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAnVCcgfVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cImZvcm1Hcm91cC5jb250cm9scz8uc2VyaWVzPy50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scz8uc2VyaWVzPy5lcnJvcnNcIlxuICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm8tZ3Jvd1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBwLWwtOCBwLXItOFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJwaWNrRGF0YXBvaW50KClcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ0xvYWQgZnJhZ21lbnQgYW5kIHNlcmllcyBmcm9tIGFuIGV4aXN0aW5nIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0xvYWQgZnJhZ21lbnQgYW5kIHNlcmllcyBmcm9tIGFuIGV4aXN0aW5nIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImV5ZWRyb3BwZXJcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY29uZmlnPy5zaG93Q2hlY2tib3hGb3JHbG9iYWxGcmFnbWVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjOHktY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cImM4eV9HbG9iYWxcIiBmb3JtQ29udHJvbE5hbWU9XCJjOHlfR2xvYmFsXCIgdHlwZT1cImNoZWNrYm94XCIgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkdsb2JhbGx5IGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiXG4gICAgICAgICAgICAgICAgICAgICdXaWxsIG1ha2UgdGhpcyBlbnRyeSBhdmFpbGFibGUgdG8gYWxsIHVzZXJzIG9uIHRoZSB0ZW5hbnQgaWYgY2hlY2tlZC4nXG4gICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBiZy1sZXZlbC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiPlxuICAgICAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlByZXZpZXc8L2xlZ2VuZD5cbiAgICAgICAgICA8Yzh5LXJhbmdlLWRpc3BsYXkgW2NvbmZpZ109XCJyYW5nZUNvbmZpZ1wiIGNsYXNzPVwibS1iLTE2IGQtYmxvY2tcIj48L2M4eS1yYW5nZS1kaXNwbGF5PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiPlxuICAgICAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJhbmdlPC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIGZvcm1Hcm91cE5hbWU9XCJyYW5nZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hhcy1lcnJvcic6IHJhbmdlPy50b3VjaGVkICYmIHJhbmdlPy5jb250cm9scz8ubWluPy5lcnJvcnMgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk1pbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAwIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJyYW5nZT8udG91Y2hlZCAmJiByYW5nZS5jb250cm9scz8ubWluPy5lcnJvcnNcIj48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hhcy1lcnJvcic6IHJhbmdlPy50b3VjaGVkICYmIHJhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnMgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk1heDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAxMDAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cInJhbmdlPy50b3VjaGVkICYmIHJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPlVuaXQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidW5pdFwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ8K6QycgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHM/LnVuaXQ/LnRvdWNoZWQgJiYgZm9ybUdyb3VwLmNvbnRyb2xzPy51bml0Py5lcnJvcnNcIlxuICAgICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6XG4gICAgICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldD8udG91Y2hlZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LmVycm9yc1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMjUgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICBbc2hvd109XCJcbiAgICAgICAgICAgICAgICAgICAgKHJhbmdlPy50b3VjaGVkIHx8IGZvcm1Hcm91cC5jb250cm9scz8udGFyZ2V0Py50b3VjaGVkKSAmJlxuICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldD8uZXJyb3JzXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiIGZvcm1Hcm91cE5hbWU9XCJ5ZWxsb3dSYW5nZVwiPlxuICAgICAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlllbGxvdyByYW5nZTwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnaGFzLWVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgKHJhbmdlPy50b3VjaGVkIHx8IHllbGxvd1JhbmdlPy50b3VjaGVkKSAmJiB5ZWxsb3dSYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk1pbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiA1MCB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgIFtzaG93XT1cIlxuICAgICAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnNcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDc1IH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgW3Nob3ddPVwiXG4gICAgICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2UuY29udHJvbHM/Lm1heD8uZXJyb3JzXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiIGZvcm1Hcm91cE5hbWU9XCJyZWRSYW5nZVwiPlxuICAgICAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJlZCByYW5nZTwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnaGFzLWVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgKHJhbmdlPy50b3VjaGVkIHx8IHJlZFJhbmdlPy50b3VjaGVkKSAmJiByZWRSYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk1pbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiA3NSB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgIFtzaG93XT1cIihyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2UuY29udHJvbHM/Lm1pbj8uZXJyb3JzXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnNcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgIFtzaG93XT1cIihyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2UuY29udHJvbHM/Lm1heD8uZXJyb3JzXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHNlcGFyYXRvciBncmlkX19jb2wtLWZ1bGxzcGFuXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIHR5cGU9XCJidXR0b25cIiBbdGl0bGVdPVwiJ0NhbmNlbCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgIHt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWZvcm1cIlxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBbdGl0bGVdPVwiJ1NhdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICpjOHlJZkFsbG93ZWQ9XCJbJ1JPTEVfSU5WRU5UT1JZX0FETUlOJywgJ1JPTEVfSU5WRU5UT1JZX1VQREFURSddOyBhbGxvd0FueTogdHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybUdyb3VwLmludmFsaWQgfHwgZm9ybUdyb3VwLnByaXN0aW5lXCJcbiAgICA+XG4gICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -100,24 +100,18 @@ export class DatapointAttributesFormValidationService {
100
100
  return [Validators.required, Validators.minLength(4)];
101
101
  }
102
102
  getLabelValidators() {
103
- return [Validators.required, Validators.minLength(1), Validators.maxLength(120)];
103
+ return [Validators.required, Validators.minLength(1)];
104
104
  }
105
105
  getDescriptionValidators() {
106
106
  return [];
107
107
  }
108
108
  getFragmentValidators() {
109
- return [
110
- Validators.required,
111
- Validators.minLength(1),
112
- Validators.maxLength(120),
113
- Validators.pattern(/^[^.]*$/)
114
- ];
109
+ return [Validators.required, Validators.minLength(1), Validators.pattern(/^[^.]*$/)];
115
110
  }
116
111
  getSeriesValidators() {
117
112
  return [
118
113
  Validators.required,
119
114
  Validators.minLength(1),
120
- Validators.maxLength(120),
121
115
  (control) => {
122
116
  const forbidden = control.value?.includes('.') || '';
123
117
  return forbidden
@@ -185,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
185
179
  type: Injectable,
186
180
  args: [{ providedIn: 'root' }]
187
181
  }], ctorParameters: () => [{ type: i1.FormBuilder }] });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLXZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTCxXQUFXLEVBSVgsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUdoRyxNQUFNLE9BQU8sd0NBQXdDO0lBQ25ELFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVoRCxtQkFBbUIsQ0FBQyxpQkFBMkIsRUFBRTtRQUMvQyxNQUFNLFVBQVUsR0FBRztZQUNqQixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDbkMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMzQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFB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QyxjQUErQjtRQUMzRCxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQzs4R0FwT1Usd0NBQXdDO2tIQUF4Qyx3Q0FBd0MsY0FEM0IsTUFBTTs7MkZBQ25CLHdDQUF3QztrQkFEcEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEM4eVZhbGlkYXRvcnMsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFYSVNfVFlQRVMsIENIQVJUX0xJTkVfVFlQRVMsIENIQVJUX1JFTkRFUl9UWVBFUyB9IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtVmFsaWRhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge31cblxuICBnZXREZWZhdWx0Rm9ybUdyb3VwKGZpZWxkc1RvUmVtb3ZlOiBzdHJpbmdbXSA9IFtdKTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCBmb3JtRmllbGRzID0ge1xuICAgICAgX19hY3RpdmU6IFt0cnVlLCBbXV0sXG4gICAgICBfX3RhcmdldDogdGhpcy5nZXRUYXJnZXRGb3JtR3JvdXAoKSxcbiAgICAgIF9fdGVtcGxhdGU6IFt1bmRlZmluZWQsIFtdXSxcbiAgICAgIGNvbG9yOiBbJycsIHRoaXMuZ2V0Q29sb3JWYWxpZGF0b3JzKCldLFxuICAgICAgbGFiZWw6IFsnJywgdGhpcy5nZXRMYWJlbFZhbGlkYXRvcnMoKV0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnLCB0aGlzLmdldERlc2NyaXB0aW9uVmFsaWRhdG9ycygpXSxcbiAgICAgIGZyYWdtZW50OiBbJycsIHRoaXMuZ2V0RnJhZ21lbnRWYWxpZGF0b3JzKCldLFxuICAgICAgc2VyaWVzOiBbJycsIHRoaXMuZ2V0U2VyaWVzVmFsaWRhdG9ycygpXSxcbiAgICAgIHJhbmdlOiB0aGlzLmdldE1pbk1heEZvcm1Hcm91cCgpLFxuICAgICAgdW5pdDogW3VuZGVmaW5lZCwgdGhpcy5nZXRVbml0VmFsaWRhdG9ycygpXSxcbiAgICAgIHRhcmdldDogW3VuZGVmaW5lZCwgdGhpcy5nZXRUYXJnZXRWYWxpZGF0b3JzKCldLFxuICAgICAgcmVkUmFuZ2U6IHRoaXMuZ2V0TWluTWF4Rm9ybUdyb3VwKCksXG4gICAgICB5ZWxsb3dSYW5nZTogdGhpcy5nZXRNaW5NYXhGb3JtR3JvdXAoKSxcbiAgICAgIGNoYXJ0OiB0aGlzLmdldENoYXJ0Rm9ybUdyb3VwKCksXG4gICAgICBkaXNwbGF5OiB0aGlzLmdldERpc3BsYXlGb3JtR3JvdXAoKVxuICAgIH07XG4gICAgaWYgKGZpZWxkc1RvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHNUb1JlbW92ZSkge1xuICAgICAgICBkZWxldGUgZm9ybUZpZWxkc1tmaWVsZF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGZvcm1GaWVsZHMsIHtcbiAgICAgIHZhbGlkYXRvcnM6IHRoaXMuZ2V0T3ZlcmFsbFZhbGlkYXRvcnMoKVxuICAgIH0pO1xuICB9XG5cbiAgY29udmVydFRvQmFja2VuZEZvcm1hdChmb3JtRGF0YVN0cnVjdHVyZTogYW55LCBzaG93Q2hhcnQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWZvcm1EYXRhU3RydWN0dXJlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgX19hY3RpdmUsXG4gICAgICBfX3RhcmdldCxcbiAgICAgIF9fdGVtcGxhdGUsXG4gICAgICBjb2xvcixcbiAgICAgIGxhYmVsLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBmcmFnbWVudCxcbiAgICAgIHNlcmllcyxcbiAgICAgIHJhbmdlLFxuICAgICAgdW5pdCxcbiAgICAgIHRhcmdldCxcbiAgICAgIHJlZFJhbmdlLFxuICAgICAgeWVsbG93UmFuZ2UsXG4gICAgICBjaGFydCxcbiAgICAgIGRpc3BsYXlcbiAgICB9ID0gZm9ybURhdGFTdHJ1Y3R1cmU7XG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgX19hY3RpdmUsXG4gICAgICBfX3RhcmdldCxcbiAgICAgIF9fdGVtcGxhdGUsXG4gICAgICBjb2xvcixcbiAgICAgIGxhYmVsLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBmcmFnbWVudCxcbiAgICAgIHNlcmllcyxcbiAgICAgIG1pbjogcmFuZ2U/Lm1pbixcbiAgICAgIG1heDogcmFuZ2U/Lm1heCxcbiAgICAgIHVuaXQsXG4gICAgICB0YXJnZXQsXG4gICAgICByZWRSYW5nZU1pbjogcmVkUmFuZ2U/Lm1pbixcbiAgICAgIHJlZFJhbmdlTWF4OiByZWRSYW5nZT8ubWF4LFxuICAgICAgeWVsbG93UmFuZ2VNaW46IHllbGxvd1JhbmdlPy5taW4sXG4gICAgICB5ZWxsb3dSYW5nZU1heDogeWVsbG93UmFuZ2U/Lm1heCxcbiAgICAgIHJlbmRlclR5cGU6IHNob3dDaGFydCA/IGNoYXJ0Py5yZW5kZXJUeXBlIDogZGlzcGxheT8ucmVuZGVyVHlwZSxcbiAgICAgIGxpbmVUeXBlOiBjaGFydD8ubGluZVR5cGUsXG4gICAgICB5QXhpc1R5cGU6IGNoYXJ0Py55QXhpc1R5cGVcbiAgICB9O1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtR3JvdXBGb3JtYXQoYmFja2VuZERhdGFTdHJ1Y3R1cmU6IGFueSkge1xuICAgIGlmICghYmFja2VuZERhdGFTdHJ1Y3R1cmUpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBfX2FjdGl2ZSxcbiAgICAgIF9fdGFyZ2V0LFxuICAgICAgX190ZW1wbGF0ZSxcbiAgICAgIGNvbG9yLFxuICAgICAgbGFiZWwsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgdW5pdCxcbiAgICAgIHRhcmdldCxcbiAgICAgIHJlZFJhbmdlTWluLFxuICAgICAgcmVkUmFuZ2VNYXgsXG4gICAgICB5ZWxsb3dSYW5nZU1pbixcbiAgICAgIHllbGxvd1JhbmdlTWF4LFxuICAgICAgcmVuZGVyVHlwZSxcbiAgICAgIGxpbmVUeXBlLFxuICAgICAgeUF4aXNUeXBlXG4gICAgfSA9IGJhY2tlbmREYXRhU3RydWN0dXJlO1xuXG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgX19hY3RpdmUsXG4gICAgICBfX3RhcmdldCxcbiAgICAgIF9fdGVtcGxhdGUsXG4gICAgICBjb2xvcixcbiAgICAgIGxhYmVsLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBmcmFnbWVudCxcbiAgICAgIHNlcmllcyxcbiAgICAgIHJhbmdlOiB7XG4gICAgICAgIG1pbjogdGhpcy5jb252ZXJ0U3RyaW5nVG9OdW1iZXIobWluKSxcbiAgICAgICAgbWF4OiB0aGlzLmNvbnZlcnRTdHJpbmdUb051bWJlcihtYXgpXG4gICAgICB9LFxuICAgICAgdW5pdCxcbiAgICAgIHRhcmdldDogdGhpcy5jb252ZXJ0U3RyaW5nVG9OdW1iZXIodGFyZ2V0KSxcbiAgICAgIHJlZFJhbmdlOiB7XG4gICAgICAgIG1pbjogdGhpcy5jb252ZXJ0U3RyaW5nVG9OdW1iZXIocmVkUmFuZ2VNaW4pLFxuICAgICAgICBtYXg6IHRoaXMuY29udmVydFN0cmluZ1RvTnVtYmVyKHJlZFJhbmdlTWF4KVxuICAgICAgfSxcbiAgICAgIHllbGxvd1JhbmdlOiB7XG4gICAgICAgIG1pbjogdGhpcy5jb252ZXJ0U3RyaW5nVG9OdW1iZXIoeWVsbG93UmFuZ2VNaW4pLFxuICAgICAgICBtYXg6IHRoaXMuY29udmVydFN0cmluZ1RvTnVtYmVyKHllbGxvd1JhbmdlTWF4KVxuICAgICAgfSxcbiAgICAgIGNoYXJ0OiByZW5kZXJUeXBlIHx8IGxpbmVUeXBlIHx8IHlBeGlzVHlwZSA/IHsgcmVuZGVyVHlwZSwgbGluZVR5cGUsIHlBeGlzVHlwZSB9IDogdW5kZWZpbmVkLFxuICAgICAgZGlzcGxheTogcmVuZGVyVHlwZSA/IHsgcmVuZGVyVHlwZSB9IDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgZ2V0Q29sb3JWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNCldO1xuICB9XG5cbiAgZ2V0TGFiZWxWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldO1xuICB9XG5cbiAgZ2V0RGVzY3JpcHRpb25WYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEZyYWdtZW50VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKSxcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXlteLl0qJC8pXG4gICAgXTtcbiAgfVxuXG4gIGdldFNlcmllc1ZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCksXG4gICAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCBmb3JiaWRkZW4gPSBjb250cm9sLnZhbHVlPy5pbmNsdWRlcygnLicpIHx8ICcnO1xuICAgICAgICByZXR1cm4gZm9yYmlkZGVuXG4gICAgICAgICAgPyB7IG5vUGVyaW9kczogeyBtZXNzYWdlOiBnZXR0ZXh0KCdTZXJpZXMgY2Fubm90IGNvbnRhaW4gcGVyaW9kcy4nKSB9IH1cbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIGdldE1pbk1heFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtDOHlWYWxpZGF0b3JzLm1pbk1heFZhbGlkYXRvcigpLCBDOHlWYWxpZGF0b3JzLnJlcXVpcmVCb3RoTWluQW5kTWF4KCldO1xuICB9XG5cbiAgZ2V0VW5pdFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0VGFyZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRPdmVyYWxsVmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgQzh5VmFsaWRhdG9ycy53aXRoaW5TY2FsZSgncmVkUmFuZ2UubWluJyksXG4gICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCdyZWRSYW5nZS5tYXgnKSxcbiAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3llbGxvd1JhbmdlLm1pbicpLFxuICAgICAgQzh5VmFsaWRhdG9ycy53aXRoaW5TY2FsZSgneWVsbG93UmFuZ2UubWF4JyksXG4gICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCd0YXJnZXQnKVxuICAgIF07XG4gIH1cblxuICBnZXRNaW5NYXhGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cChcbiAgICAgIHsgbWluOiBbdW5kZWZpbmVkLCBbXV0sIG1heDogW3VuZGVmaW5lZCwgW11dIH0sXG4gICAgICB7IHZhbGlkYXRvcnM6IHRoaXMuZ2V0TWluTWF4VmFsaWRhdG9ycygpIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0Q2hhcnRGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICByZW5kZXJUeXBlOiBbQ0hBUlRfUkVOREVSX1RZUEVTWzBdLnZhbCwgW11dLFxuICAgICAgbGluZVR5cGU6IFtDSEFSVF9MSU5FX1RZUEVTWzBdLnZhbCwgW11dLFxuICAgICAgeUF4aXNUeXBlOiBbQVhJU19UWVBFU1swXS52YWwsIFtdXVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGlzcGxheUZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHJlbmRlclR5cGU6IFtDSEFSVF9SRU5ERVJfVFlQRVNbMF0udmFsLCBbXV1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFRhcmdldEZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbdW5kZWZpbmVkLCBbXV0sXG4gICAgICBuYW1lOiBbdW5kZWZpbmVkLCBbXV1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFN0cmluZ1RvTnVtYmVyKHBvc3NpYmxlU3RyaW5nOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgcG9zc2libGVTdHJpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gTnVtYmVyLnBhcnNlRmxvYXQocG9zc2libGVTdHJpbmcpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwb3NzaWJsZVN0cmluZztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLXZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTCxXQUFXLEVBSVgsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUdoRyxNQUFNLE9BQU8sd0NBQXdDO0lBQ25ELFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVoRCxtQkFBbUIsQ0FBQyxpQkFBMkIsRUFBRTtRQUMvQyxNQUFNLFVBQVUsR0FBRztZQUNqQixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDbkMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMzQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFB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QztZQUMzQyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOzhHQTlOVSx3Q0FBd0M7a0hBQXhDLHdDQUF3QyxjQUQzQixNQUFNOzsyRkFDbkIsd0NBQXdDO2tCQURwRCxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQzh5VmFsaWRhdG9ycywgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhJU19UWVBFUywgQ0hBUlRfTElORV9UWVBFUywgQ0hBUlRfUkVOREVSX1RZUEVTIH0gZnJvbSAnLi9kYXRhcG9pbnQtYXR0cmlidXRlcy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50QXR0cmlidXRlc0Zvcm1WYWxpZGF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7fVxuXG4gIGdldERlZmF1bHRGb3JtR3JvdXAoZmllbGRzVG9SZW1vdmU6IHN0cmluZ1tdID0gW10pOiBGb3JtR3JvdXAge1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB7XG4gICAgICBfX2FjdGl2ZTogW3RydWUsIFtdXSxcbiAgICAgIF9fdGFyZ2V0OiB0aGlzLmdldFRhcmdldEZvcm1Hcm91cCgpLFxuICAgICAgX190ZW1wbGF0ZTogW3VuZGVmaW5lZCwgW11dLFxuICAgICAgY29sb3I6IFsnJywgdGhpcy5nZXRDb2xvclZhbGlkYXRvcnMoKV0sXG4gICAgICBsYWJlbDogWycnLCB0aGlzLmdldExhYmVsVmFsaWRhdG9ycygpXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbJycsIHRoaXMuZ2V0RGVzY3JpcHRpb25WYWxpZGF0b3JzKCldLFxuICAgICAgZnJhZ21lbnQ6IFsnJywgdGhpcy5nZXRGcmFnbWVudFZhbGlkYXRvcnMoKV0sXG4gICAgICBzZXJpZXM6IFsnJywgdGhpcy5nZXRTZXJpZXNWYWxpZGF0b3JzKCldLFxuICAgICAgcmFuZ2U6IHRoaXMuZ2V0TWluTWF4Rm9ybUdyb3VwKCksXG4gICAgICB1bml0OiBbdW5kZWZpbmVkLCB0aGlzLmdldFVuaXRWYWxpZGF0b3JzKCldLFxuICAgICAgdGFyZ2V0OiBbdW5kZWZpbmVkLCB0aGlzLmdldFRhcmdldFZhbGlkYXRvcnMoKV0sXG4gICAgICByZWRSYW5nZTogdGhpcy5nZXRNaW5NYXhGb3JtR3JvdXAoKSxcbiAgICAgIHllbGxvd1JhbmdlOiB0aGlzLmdldE1pbk1heEZvcm1Hcm91cCgpLFxuICAgICAgY2hhcnQ6IHRoaXMuZ2V0Q2hhcnRGb3JtR3JvdXAoKSxcbiAgICAgIGRpc3BsYXk6IHRoaXMuZ2V0RGlzcGxheUZvcm1Hcm91cCgpXG4gICAgfTtcbiAgICBpZiAoZmllbGRzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkc1RvUmVtb3ZlKSB7XG4gICAgICAgIGRlbGV0ZSBmb3JtRmllbGRzW2ZpZWxkXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZm9ybUZpZWxkcywge1xuICAgICAgdmFsaWRhdG9yczogdGhpcy5nZXRPdmVyYWxsVmFsaWRhdG9ycygpXG4gICAgfSk7XG4gIH1cblxuICBjb252ZXJ0VG9CYWNrZW5kRm9ybWF0KGZvcm1EYXRhU3RydWN0dXJlOiBhbnksIHNob3dDaGFydDogYm9vbGVhbikge1xuICAgIGlmICghZm9ybURhdGFTdHJ1Y3R1cmUpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBfX2FjdGl2ZSxcbiAgICAgIF9fdGFyZ2V0LFxuICAgICAgX190ZW1wbGF0ZSxcbiAgICAgIGNvbG9yLFxuICAgICAgbGFiZWwsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgcmFuZ2UsXG4gICAgICB1bml0LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcmVkUmFuZ2UsXG4gICAgICB5ZWxsb3dSYW5nZSxcbiAgICAgIGNoYXJ0LFxuICAgICAgZGlzcGxheVxuICAgIH0gPSBmb3JtRGF0YVN0cnVjdHVyZTtcbiAgICBjb25zdCBvYmogPSB7XG4gICAgICBfX2FjdGl2ZSxcbiAgICAgIF9fdGFyZ2V0LFxuICAgICAgX190ZW1wbGF0ZSxcbiAgICAgIGNvbG9yLFxuICAgICAgbGFiZWwsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgbWluOiByYW5nZT8ubWluLFxuICAgICAgbWF4OiByYW5nZT8ubWF4LFxuICAgICAgdW5pdCxcbiAgICAgIHRhcmdldCxcbiAgICAgIHJlZFJhbmdlTWluOiByZWRSYW5nZT8ubWluLFxuICAgICAgcmVkUmFuZ2VNYXg6IHJlZFJhbmdlPy5tYXgsXG4gICAgICB5ZWxsb3dSYW5nZU1pbjogeWVsbG93UmFuZ2U/Lm1pbixcbiAgICAgIHllbGxvd1JhbmdlTWF4OiB5ZWxsb3dSYW5nZT8ubWF4LFxuICAgICAgcmVuZGVyVHlwZTogc2hvd0NoYXJ0ID8gY2hhcnQ/LnJlbmRlclR5cGUgOiBkaXNwbGF5Py5yZW5kZXJUeXBlLFxuICAgICAgbGluZVR5cGU6IGNoYXJ0Py5saW5lVHlwZSxcbiAgICAgIHlBeGlzVHlwZTogY2hhcnQ/LnlBeGlzVHlwZVxuICAgIH07XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGNvbnZlcnRUb0Zvcm1Hcm91cEZvcm1hdChiYWNrZW5kRGF0YVN0cnVjdHVyZTogYW55KSB7XG4gICAgaWYgKCFiYWNrZW5kRGF0YVN0cnVjdHVyZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIF9fYWN0aXZlLFxuICAgICAgX190YXJnZXQsXG4gICAgICBfX3RlbXBsYXRlLFxuICAgICAgY29sb3IsXG4gICAgICBsYWJlbCxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZnJhZ21lbnQsXG4gICAgICBzZXJpZXMsXG4gICAgICBtaW4sXG4gICAgICBtYXgsXG4gICAgICB1bml0LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcmVkUmFuZ2VNaW4sXG4gICAgICByZWRSYW5nZU1heCxcbiAgICAgIHllbGxvd1JhbmdlTWluLFxuICAgICAgeWVsbG93UmFuZ2VNYXgsXG4gICAgICByZW5kZXJUeXBlLFxuICAgICAgbGluZVR5cGUsXG4gICAgICB5QXhpc1R5cGVcbiAgICB9ID0gYmFja2VuZERhdGFTdHJ1Y3R1cmU7XG5cbiAgICBjb25zdCBvYmogPSB7XG4gICAgICBfX2FjdGl2ZSxcbiAgICAgIF9fdGFyZ2V0LFxuICAgICAgX190ZW1wbGF0ZSxcbiAgICAgIGNvbG9yLFxuICAgICAgbGFiZWwsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgcmFuZ2U6IHtcbiAgICAgICAgbWluOiB0aGlzLmNvbnZlcnRTdHJpbmdUb051bWJlcihtaW4pLFxuICAgICAgICBtYXg6IHRoaXMuY29udmVydFN0cmluZ1RvTnVtYmVyKG1heClcbiAgICAgIH0sXG4gICAgICB1bml0LFxuICAgICAgdGFyZ2V0OiB0aGlzLmNvbnZlcnRTdHJpbmdUb051bWJlcih0YXJnZXQpLFxuICAgICAgcmVkUmFuZ2U6IHtcbiAgICAgICAgbWluOiB0aGlzLmNvbnZlcnRTdHJpbmdUb051bWJlcihyZWRSYW5nZU1pbiksXG4gICAgICAgIG1heDogdGhpcy5jb252ZXJ0U3RyaW5nVG9OdW1iZXIocmVkUmFuZ2VNYXgpXG4gICAgICB9LFxuICAgICAgeWVsbG93UmFuZ2U6IHtcbiAgICAgICAgbWluOiB0aGlzLmNvbnZlcnRTdHJpbmdUb051bWJlcih5ZWxsb3dSYW5nZU1pbiksXG4gICAgICAgIG1heDogdGhpcy5jb252ZXJ0U3RyaW5nVG9OdW1iZXIoeWVsbG93UmFuZ2VNYXgpXG4gICAgICB9LFxuICAgICAgY2hhcnQ6IHJlbmRlclR5cGUgfHwgbGluZVR5cGUgfHwgeUF4aXNUeXBlID8geyByZW5kZXJUeXBlLCBsaW5lVHlwZSwgeUF4aXNUeXBlIH0gOiB1bmRlZmluZWQsXG4gICAgICBkaXNwbGF5OiByZW5kZXJUeXBlID8geyByZW5kZXJUeXBlIH0gOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBnZXRDb2xvclZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg0KV07XG4gIH1cblxuICBnZXRMYWJlbFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKV07XG4gIH1cblxuICBnZXREZXNjcmlwdGlvblZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0RnJhZ21lbnRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMucGF0dGVybigvXlteLl0qJC8pXTtcbiAgfVxuXG4gIGdldFNlcmllc1ZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcbiAgICAgIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IGZvcmJpZGRlbiA9IGNvbnRyb2wudmFsdWU/LmluY2x1ZGVzKCcuJykgfHwgJyc7XG4gICAgICAgIHJldHVybiBmb3JiaWRkZW5cbiAgICAgICAgICA/IHsgbm9QZXJpb2RzOiB7IG1lc3NhZ2U6IGdldHRleHQoJ1NlcmllcyBjYW5ub3QgY29udGFpbiBwZXJpb2RzLicpIH0gfVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgZ2V0TWluTWF4VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gW0M4eVZhbGlkYXRvcnMubWluTWF4VmFsaWRhdG9yKCksIEM4eVZhbGlkYXRvcnMucmVxdWlyZUJvdGhNaW5BbmRNYXgoKV07XG4gIH1cblxuICBnZXRVbml0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRUYXJnZXRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldE92ZXJhbGxWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbXG4gICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCdyZWRSYW5nZS5taW4nKSxcbiAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3JlZFJhbmdlLm1heCcpLFxuICAgICAgQzh5VmFsaWRhdG9ycy53aXRoaW5TY2FsZSgneWVsbG93UmFuZ2UubWluJyksXG4gICAgICBDOHlWYWxpZGF0b3JzLndpdGhpblNjYWxlKCd5ZWxsb3dSYW5nZS5tYXgnKSxcbiAgICAgIEM4eVZhbGlkYXRvcnMud2l0aGluU2NhbGUoJ3RhcmdldCcpXG4gICAgXTtcbiAgfVxuXG4gIGdldE1pbk1heEZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxuICAgICAgeyBtaW46IFt1bmRlZmluZWQsIFtdXSwgbWF4OiBbdW5kZWZpbmVkLCBbXV0gfSxcbiAgICAgIHsgdmFsaWRhdG9yczogdGhpcy5nZXRNaW5NYXhWYWxpZGF0b3JzKCkgfVxuICAgICk7XG4gIH1cblxuICBnZXRDaGFydEZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHJlbmRlclR5cGU6IFtDSEFSVF9SRU5ERVJfVFlQRVNbMF0udmFsLCBbXV0sXG4gICAgICBsaW5lVHlwZTogW0NIQVJUX0xJTkVfVFlQRVNbMF0udmFsLCBbXV0sXG4gICAgICB5QXhpc1R5cGU6IFtBWElTX1RZUEVTWzBdLnZhbCwgW11dXG4gICAgfSk7XG4gIH1cblxuICBnZXREaXNwbGF5Rm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcmVuZGVyVHlwZTogW0NIQVJUX1JFTkRFUl9UWVBFU1swXS52YWwsIFtdXVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0VGFyZ2V0Rm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IFt1bmRlZmluZWQsIFtdXSxcbiAgICAgIG5hbWU6IFt1bmRlZmluZWQsIFtdXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0U3RyaW5nVG9OdW1iZXIocG9zc2libGVTdHJpbmc6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiBwb3NzaWJsZVN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIucGFyc2VGbG9hdChwb3NzaWJsZVN0cmluZyk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBvc3NpYmxlU3RyaW5nO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -21,6 +21,8 @@ export class DatapointAttributesFormComponent {
21
21
  this.showRedRange = true;
22
22
  this.showChart = true;
23
23
  this.showFormIfTemplateWasSelected = false;
24
+ /** Displays all errors even if the form was not touched yet. */
25
+ this.showErrorsImmediately = false;
24
26
  this.rawValue = {};
25
27
  this.CHART_RENDER_TYPES = Array.from(CHART_RENDER_TYPES);
26
28
  this.CHART_LINE_TYPES = Array.from(CHART_LINE_TYPES);
@@ -34,6 +36,11 @@ export class DatapointAttributesFormComponent {
34
36
  this.initializeFormVisibility();
35
37
  this.filterChartTypes();
36
38
  }
39
+ ngAfterViewInit() {
40
+ if (this.showErrorsImmediately) {
41
+ this.formGroup.markAllAsTouched();
42
+ }
43
+ }
37
44
  validate(_control) {
38
45
  if (this.formGroup?.get('series')?.errors?.noPeriods) {
39
46
  return this.formGroup?.get('series')?.errors;
@@ -108,7 +115,7 @@ export class DatapointAttributesFormComponent {
108
115
  }
109
116
  }
110
117
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointAttributesFormComponent, deps: [{ token: i1.DatapointAttributesFormValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointAttributesFormComponent, selector: "c8y-datapoint-attributes-form", inputs: { selectableChartRenderTypes: "selectableChartRenderTypes", selectableChartLineTypes: "selectableChartLineTypes", selectableAxisTypes: "selectableAxisTypes", showTarget: "showTarget", showRange: "showRange", showYellowRange: "showYellowRange", showRedRange: "showRedRange", showChart: "showChart", showFormIfTemplateWasSelected: "showFormIfTemplateWasSelected" }, providers: [
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointAttributesFormComponent, selector: "c8y-datapoint-attributes-form", inputs: { selectableChartRenderTypes: "selectableChartRenderTypes", selectableChartLineTypes: "selectableChartLineTypes", selectableAxisTypes: "selectableAxisTypes", showTarget: "showTarget", showRange: "showRange", showYellowRange: "showYellowRange", showRedRange: "showRedRange", showChart: "showChart", showFormIfTemplateWasSelected: "showFormIfTemplateWasSelected", showErrorsImmediately: "showErrorsImmediately" }, providers: [
112
119
  {
113
120
  provide: NG_VALUE_ACCESSOR,
114
121
  useExisting: forwardRef(() => DatapointAttributesFormComponent),
@@ -153,5 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
153
160
  type: Input
154
161
  }], showFormIfTemplateWasSelected: [{
155
162
  type: Input
163
+ }], showErrorsImmediately: [{
164
+ type: Input
156
165
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtL2RhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFJTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsVUFBVSxFQUVWLGdCQUFnQixFQUNoQixrQkFBa0IsRUFHbkIsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQWtCdEMsTUFBTSxPQUFPLGdDQUFnQztJQThCM0MsWUFBb0IsZUFBeUQ7UUFBekQsb0JBQWUsR0FBZixlQUFlLENBQTBDO1FBN0JwRSwrQkFBMEIsR0FBdUIsRUFBRSxDQUFDO1FBQ3BELDZCQUF3QixHQUFxQixFQUFFLENBQUM7UUFDaEQsd0JBQW1CLEdBQWdCLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixrQ0FB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Q0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDL0QsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUMvRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDbkNILHdwWEErV2M7OzJGRDFVRCxnQ0FBZ0M7a0JBaEI1QyxTQUFTOytCQUNFLCtCQUErQixhQUU5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQ0FBaUMsQ0FBQzs0QkFDL0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlDQUFpQyxDQUFDOzRCQUMvRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs2R0FHUSwwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csNkJBQTZCO3NCQUFyQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YXBvaW50QXR0cmlidXRlc0Zvcm1WYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQVhJU19UWVBFUyxcbiAgQXhpc1R5cGVzLFxuICBDSEFSVF9MSU5FX1RZUEVTLFxuICBDSEFSVF9SRU5ERVJfVFlQRVMsXG4gIENoYXJ0TGluZVR5cGVzLFxuICBDaGFydFJlbmRlclR5cGVzXG59IGZyb20gJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0IHtcbiAgQElucHV0KCkgc2VsZWN0YWJsZUNoYXJ0UmVuZGVyVHlwZXM6IENoYXJ0UmVuZGVyVHlwZXNbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXM6IENoYXJ0TGluZVR5cGVzW10gPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0YWJsZUF4aXNUeXBlczogQXhpc1R5cGVzW10gPSBbXTtcbiAgQElucHV0KCkgc2hvd1RhcmdldCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dZZWxsb3dSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dSZWRSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dDaGFydCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dGb3JtSWZUZW1wbGF0ZVdhc1NlbGVjdGVkID0gZmFsc2U7XG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICByYW5nZTogRm9ybUdyb3VwO1xuICB5ZWxsb3dSYW5nZTogRm9ybUdyb3VwO1xuICByZWRSYW5nZTogRm9ybUdyb3VwO1xuICBjaGFydDogRm9ybUdyb3VwO1xuICBkaXNwbGF5OiBGb3JtR3JvdXA7XG4gIHJhd1ZhbHVlOiBhbnkgPSB7fTtcbiAgQ0hBUlRfUkVOREVSX1RZUEVTOiBBcnJheTwodHlwZW9mIENIQVJUX1JFTkRFUl9UWVBFUylbbnVtYmVyXT4gPSBBcnJheS5mcm9tKENIQVJUX1JFTkRFUl9UWVBFUyk7XG4gIENIQVJUX0xJTkVfVFlQRVM6IEFycmF5PCh0eXBlb2YgQ0hBUlRfTElORV9UWVBFUylbbnVtYmVyXT4gPSBBcnJheS5mcm9tKENIQVJUX0xJTkVfVFlQRVMpO1xuICBBWElTX1RZUEVTOiBBcnJheTwodHlwZW9mIEFYSVNfVFlQRVMpW251bWJlcl0+ID0gQXJyYXkuZnJvbShBWElTX1RZUEVTKTtcblxuICBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlczoge1xuICAgIFtmb3JtRmllbGQ6IHN0cmluZ106IHtcbiAgICAgIFt2YWxpZGF0aW9uRXJyb3I6IHN0cmluZ106IHN0cmluZztcbiAgICB9O1xuICB9ID0ge307XG4gIHNob3VsZEZvcmNlSW5pdGlhbFZhbGlkYXRpb24gPSB0cnVlO1xuICBzaG93T25seURpc3BsYXlGb3JtOiBib29sZWFuO1xuICBzaG93Q2hhcnRGb3JtOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybVZhbGlkYXRpb25zOiBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybVZhbGlkYXRpb25TZXJ2aWNlKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1WYWxpZGF0aW9ucy5nZXREZWZhdWx0Rm9ybUdyb3VwKCk7XG4gICAgdGhpcy5zZXRTdWJGb3JtcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybVZpc2liaWxpdHkoKTtcbiAgICB0aGlzLmZpbHRlckNoYXJ0VHlwZXMoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycz8ubm9QZXJpb2RzKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmF3VmFsdWUgPSBvYmogfHwge307XG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmZvcm1WYWxpZGF0aW9ucy5jb252ZXJ0VG9Gb3JtR3JvdXBGb3JtYXQob2JqKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbikge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gdGhpcy5mb3JtVmFsaWRhdGlvbnMuY29udmVydFRvQmFja2VuZEZvcm1hdChmb3JtVmFsdWUsIHRoaXMuc2hvd0NoYXJ0KSksXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJhd1ZhbHVlLCBmb3JtVmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cD8uZGlzYWJsZWQgPT09IGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoKSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJGb3JtcygpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnJhbmdlID0gdGhpcy55ZWxsb3dSYW5nZSA9IHRoaXMucmVkUmFuZ2UgPSB0aGlzLmNoYXJ0ID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnllbGxvd1JhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCd5ZWxsb3dSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnJlZFJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyZWRSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmNoYXJ0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdjaGFydCcpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Rpc3BsYXknKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFydEZvcm0gPSB0aGlzLmNoYXJ0ICYmIHRoaXMuc2hvd0NoYXJ0O1xuXG4gICAgY29uc3QgaGFzTGluZVR5cGVzID0gISF0aGlzLnNlbGVjdGFibGVDaGFydExpbmVUeXBlcz8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0F4aXNUeXBlcyA9ICEhdGhpcy5zZWxlY3RhYmxlQXhpc1R5cGVzPy5sZW5ndGg7XG4gICAgY29uc3QgaGFzUmVuZGVyVHlwZXMgPVxuICAgICAgdGhpcy5zZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlcz8ubGVuZ3RoID4gMCB8fCB0aGlzLnNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzID09PSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnNob3dPbmx5RGlzcGxheUZvcm0gPVxuICAgICAgIXRoaXMuc2hvd0NoYXJ0Rm9ybSAmJiAhaGFzTGluZVR5cGVzICYmICFoYXNBeGlzVHlwZXMgJiYgaGFzUmVuZGVyVHlwZXM7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNoYXJ0VHlwZXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJSZW5kZXJUeXBlcygpO1xuICAgIHRoaXMuZmlsdGVyTGluZVR5cGVzKCk7XG4gICAgdGhpcy5maWx0ZXJBeGlzVHlwZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyUmVuZGVyVHlwZXMoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5zZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLkNIQVJUX1JFTkRFUl9UWVBFUyA9IHRoaXMuQ0hBUlRfUkVOREVSX1RZUEVTLmZpbHRlcihyZW5kZXJUeXBlID0+XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUNoYXJ0UmVuZGVyVHlwZXMuaW5jbHVkZXMocmVuZGVyVHlwZS52YWwpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTGluZVR5cGVzKCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuc2VsZWN0YWJsZUNoYXJ0TGluZVR5cGVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQ0hBUlRfTElORV9UWVBFUyA9IHRoaXMuQ0hBUlRfTElORV9UWVBFUy5maWx0ZXIobGluZVR5cGUgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXMuaW5jbHVkZXMobGluZVR5cGUudmFsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckF4aXNUeXBlcygpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLnNlbGVjdGFibGVBeGlzVHlwZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5BWElTX1RZUEVTID0gdGhpcy5BWElTX1RZUEVTLmZpbHRlcihheGlzVHlwZSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGFibGVBeGlzVHlwZXMuaW5jbHVkZXMoYXhpc1R5cGUudmFsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyYXdWYWx1ZT8uX190ZW1wbGF0ZSB8fCBzaG93Rm9ybUlmVGVtcGxhdGVXYXNTZWxlY3RlZFwiPlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsIHx8IGZvcm1Hcm91cC5jb250cm9scz8udW5pdCB8fCBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldFwiXG4gICAgPlxuICAgICAgPGxlZ2VuZCB0cmFuc2xhdGU+RGV0YWlsczwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtbWQtNlwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TGFiZWw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ1RlbXBlcmF0dXJlJyB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cImZvcm1Hcm91cC5jb250cm9scy5sYWJlbC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy5sYWJlbC5lcnJvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbGFiZWwnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTZcIlxuICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy51bml0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+VW5pdDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuYW1lPVwidW5pdFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ8K6QycgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHMudW5pdC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy51bml0LmVycm9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd1bml0J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC1tZC02XCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1Hcm91cC5jb250cm9scz8udGFyZ2V0ICYmIHNob3dUYXJnZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCBmb3JtR3JvdXAuY29udHJvbHMudGFyZ2V0LnRvdWNoZWQpICYmXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXJnZXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMjUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJcbiAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgZm9ybUdyb3VwLmNvbnRyb2xzLnRhcmdldC50b3VjaGVkKSAmJlxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9scy50YXJnZXQuZXJyb3JzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd0YXJnZXQnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJyYW5nZSAmJiBzaG93UmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJhbmdlPC9sZWdlbmQ+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgZm9ybUdyb3VwTmFtZT1cInJhbmdlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWluPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJyYW5nZT8udG91Y2hlZCAmJiByYW5nZS5jb250cm9scz8ubWluPy5lcnJvcnNcIj48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cInJhbmdlPy50b3VjaGVkICYmIHJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbWF4J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cblxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cInllbGxvd1JhbmdlXCJcbiAgICAgICpuZ0lmPVwieWVsbG93UmFuZ2UgJiYgc2hvd1llbGxvd1JhbmdlXCJcbiAgICA+XG4gICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5ZZWxsb3cgcmFuZ2U8L2xlZ2VuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNTAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5tYXg/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NYXg8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGZpZWxkc2V0XG4gICAgICBjbGFzcz1cImM4eS1maWVsZHNldFwiXG4gICAgICBmb3JtR3JvdXBOYW1lPVwicmVkUmFuZ2VcIlxuICAgICAgKm5nSWY9XCJyZWRSYW5nZSAmJiBzaG93UmVkUmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJlZCByYW5nZTwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6IChyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOiAocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cIihyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2UuY29udHJvbHM/Lm1heD8uZXJyb3JzXCJcbiAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxmaWVsZHNldFxuICAgIGNsYXNzPVwiYzh5LWZpZWxkc2V0XCJcbiAgICAqbmdJZj1cInNob3dDaGFydEZvcm1cIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJjaGFydFwiXG4gID5cbiAgICA8bGVnZW5kIHRyYW5zbGF0ZT5DaGFydDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJ0aWdodC1ncmlkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29sLXhzLTYgY29sLXNtLTRcIlxuICAgICAgICAqbmdJZj1cInNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzPy5sZW5ndGggIT09IDBcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlIZWxwQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlbmRlclR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfUkVOREVSX1RZUEVTXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJ0eXBlLnZhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0eXBlLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCJcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXM/Lmxlbmd0aCAhPT0gMFwiXG4gICAgICA+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImNoYXJ0VHlwZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDaGFydCB0eXBlXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGluZVR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfTElORV9UWVBFU1wiXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHlwZS52YWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHlwZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb2wteHMtNiBjb2wtc20tNFwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0YWJsZUF4aXNUeXBlcz8ubGVuZ3RoICE9PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwieUF4aXNcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgWS1heGlzXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwieUF4aXNUeXBlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0eXBlIG9mIEFYSVNfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldFxuICAgIGNsYXNzPVwiYzh5LWZpZWxkc2V0XCJcbiAgICAqbmdJZj1cInNob3dPbmx5RGlzcGxheUZvcm1cIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJkaXNwbGF5XCJcbiAgPlxuICAgIDxsZWdlbmQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGxheUhlbHBCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2xlZ2VuZD5cbiAgICA8ZGl2IGNsYXNzPVwidGlnaHQtZ3JpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVuZGVyVHlwZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdHlwZSBvZiBDSEFSVF9SRU5ERVJfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkaXNwbGF5SGVscEJ1dHRvbj5cbiAgPGxhYmVsPlxuICAgIHt7ICdEaXNwbGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBvcG92ZXI9XCJ7eyAnVmFsdWUgZGlzcGxheWVkIHdoZW4gZGF0YSBpcyBhZ2dyZWdhdGVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICA+PC9idXR0b24+XG4gIDwvbGFiZWw+XG48L25nLXRlbXBsYXRlPiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtc2VsZWN0b3IvZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtYXR0cmlidXRlcy1mb3JtL2RhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBSUwsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDMUcsT0FBTyxFQUNMLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBR25CLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUFrQnRDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFrQzNDLFlBQW9CLGVBQXlEO1FBQXpELG9CQUFlLEdBQWYsZUFBZSxDQUEwQztRQS9CcEUsK0JBQTBCLEdBQXVCLEVBQUUsQ0FBQztRQUNwRCw2QkFBd0IsR0FBcUIsRUFBRSxDQUFDO1FBQ2hELHdCQUFtQixHQUFnQixFQUFFLENBQUM7UUFDdEMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsa0NB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IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYSVNfVFlQRVMsXG4gIEF4aXNUeXBlcyxcbiAgQ0hBUlRfTElORV9UWVBFUyxcbiAgQ0hBUlRfUkVOREVSX1RZUEVTLFxuICBDaGFydExpbmVUeXBlcyxcbiAgQ2hhcnRSZW5kZXJUeXBlc1xufSBmcm9tICcuL2RhdGFwb2ludC1hdHRyaWJ1dGVzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1hdHRyaWJ1dGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LWF0dHJpYnV0ZXMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50QXR0cmlidXRlc0Zvcm1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKSBzZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlczogQ2hhcnRSZW5kZXJUeXBlc1tdID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGFibGVDaGFydExpbmVUeXBlczogQ2hhcnRMaW5lVHlwZXNbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlQXhpc1R5cGVzOiBBeGlzVHlwZXNbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93VGFyZ2V0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1JhbmdlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1llbGxvd1JhbmdlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1JlZFJhbmdlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NoYXJ0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0Zvcm1JZlRlbXBsYXRlV2FzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgLyoqIERpc3BsYXlzIGFsbCBlcnJvcnMgZXZlbiBpZiB0aGUgZm9ybSB3YXMgbm90IHRvdWNoZWQgeWV0LiAqL1xuICBASW5wdXQoKSBzaG93RXJyb3JzSW1tZWRpYXRlbHkgPSBmYWxzZTtcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHJhbmdlOiBGb3JtR3JvdXA7XG4gIHllbGxvd1JhbmdlOiBGb3JtR3JvdXA7XG4gIHJlZFJhbmdlOiBGb3JtR3JvdXA7XG4gIGNoYXJ0OiBGb3JtR3JvdXA7XG4gIGRpc3BsYXk6IEZvcm1Hcm91cDtcbiAgcmF3VmFsdWU6IGFueSA9IHt9O1xuICBDSEFSVF9SRU5ERVJfVFlQRVM6IEFycmF5PCh0eXBlb2YgQ0hBUlRfUkVOREVSX1RZUEVTKVtudW1iZXJdPiA9IEFycmF5LmZyb20oQ0hBUlRfUkVOREVSX1RZUEVTKTtcbiAgQ0hBUlRfTElORV9UWVBFUzogQXJyYXk8KHR5cGVvZiBDSEFSVF9MSU5FX1RZUEVTKVtudW1iZXJdPiA9IEFycmF5LmZyb20oQ0hBUlRfTElORV9UWVBFUyk7XG4gIEFYSVNfVFlQRVM6IEFycmF5PCh0eXBlb2YgQVhJU19UWVBFUylbbnVtYmVyXT4gPSBBcnJheS5mcm9tKEFYSVNfVFlQRVMpO1xuXG4gIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzOiB7XG4gICAgW2Zvcm1GaWVsZDogc3RyaW5nXToge1xuICAgICAgW3ZhbGlkYXRpb25FcnJvcjogc3RyaW5nXTogc3RyaW5nO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbiA9IHRydWU7XG4gIHNob3dPbmx5RGlzcGxheUZvcm06IGJvb2xlYW47XG4gIHNob3dDaGFydEZvcm06IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtVmFsaWRhdGlvbnM6IERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtVmFsaWRhdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybVZhbGlkYXRpb25zLmdldERlZmF1bHRGb3JtR3JvdXAoKTtcbiAgICB0aGlzLnNldFN1YkZvcm1zKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtVmlzaWJpbGl0eSgpO1xuICAgIHRoaXMuZmlsdGVyQ2hhcnRUeXBlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dFcnJvcnNJbW1lZGlhdGVseSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycz8ubm9QZXJpb2RzKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldCgnc2VyaWVzJyk/LmVycm9ycztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmF3VmFsdWUgPSBvYmogfHwge307XG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmZvcm1WYWxpZGF0aW9ucy5jb252ZXJ0VG9Gb3JtR3JvdXBGb3JtYXQob2JqKSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbikge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2hvdWxkRm9yY2VJbml0aWFsVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gdGhpcy5mb3JtVmFsaWRhdGlvbnMuY29udmVydFRvQmFja2VuZEZvcm1hdChmb3JtVmFsdWUsIHRoaXMuc2hvd0NoYXJ0KSksXG4gICAgICAgIG1hcChmb3JtVmFsdWUgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJhd1ZhbHVlLCBmb3JtVmFsdWUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cD8uZGlzYWJsZWQgPT09IGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoKSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJGb3JtcygpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnJhbmdlID0gdGhpcy55ZWxsb3dSYW5nZSA9IHRoaXMucmVkUmFuZ2UgPSB0aGlzLmNoYXJ0ID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnllbGxvd1JhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCd5ZWxsb3dSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLnJlZFJhbmdlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdyZWRSYW5nZScpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmNoYXJ0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdjaGFydCcpIGFzIEZvcm1Hcm91cDtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Rpc3BsYXknKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFydEZvcm0gPSB0aGlzLmNoYXJ0ICYmIHRoaXMuc2hvd0NoYXJ0O1xuXG4gICAgY29uc3QgaGFzTGluZVR5cGVzID0gISF0aGlzLnNlbGVjdGFibGVDaGFydExpbmVUeXBlcz8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0F4aXNUeXBlcyA9ICEhdGhpcy5zZWxlY3RhYmxlQXhpc1R5cGVzPy5sZW5ndGg7XG4gICAgY29uc3QgaGFzUmVuZGVyVHlwZXMgPVxuICAgICAgdGhpcy5zZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlcz8ubGVuZ3RoID4gMCB8fCB0aGlzLnNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzID09PSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnNob3dPbmx5RGlzcGxheUZvcm0gPVxuICAgICAgIXRoaXMuc2hvd0NoYXJ0Rm9ybSAmJiAhaGFzTGluZVR5cGVzICYmICFoYXNBeGlzVHlwZXMgJiYgaGFzUmVuZGVyVHlwZXM7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNoYXJ0VHlwZXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJSZW5kZXJUeXBlcygpO1xuICAgIHRoaXMuZmlsdGVyTGluZVR5cGVzKCk7XG4gICAgdGhpcy5maWx0ZXJBeGlzVHlwZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyUmVuZGVyVHlwZXMoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5zZWxlY3RhYmxlQ2hhcnRSZW5kZXJUeXBlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLkNIQVJUX1JFTkRFUl9UWVBFUyA9IHRoaXMuQ0hBUlRfUkVOREVSX1RZUEVTLmZpbHRlcihyZW5kZXJUeXBlID0+XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZUNoYXJ0UmVuZGVyVHlwZXMuaW5jbHVkZXMocmVuZGVyVHlwZS52YWwpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTGluZVR5cGVzKCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuc2VsZWN0YWJsZUNoYXJ0TGluZVR5cGVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuQ0hBUlRfTElORV9UWVBFUyA9IHRoaXMuQ0hBUlRfTElORV9UWVBFUy5maWx0ZXIobGluZVR5cGUgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXMuaW5jbHVkZXMobGluZVR5cGUudmFsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckF4aXNUeXBlcygpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLnNlbGVjdGFibGVBeGlzVHlwZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5BWElTX1RZUEVTID0gdGhpcy5BWElTX1RZUEVTLmZpbHRlcihheGlzVHlwZSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGFibGVBeGlzVHlwZXMuaW5jbHVkZXMoYXhpc1R5cGUudmFsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyYXdWYWx1ZT8uX190ZW1wbGF0ZSB8fCBzaG93Rm9ybUlmVGVtcGxhdGVXYXNTZWxlY3RlZFwiPlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsIHx8IGZvcm1Hcm91cC5jb250cm9scz8udW5pdCB8fCBmb3JtR3JvdXAuY29udHJvbHM/LnRhcmdldFwiXG4gICAgPlxuICAgICAgPGxlZ2VuZCB0cmFuc2xhdGU+RGV0YWlsczwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtbWQtNlwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHM/LmxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TGFiZWw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ1RlbXBlcmF0dXJlJyB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cImZvcm1Hcm91cC5jb250cm9scy5sYWJlbC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy5sYWJlbC5lcnJvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbGFiZWwnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTZcIlxuICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmNvbnRyb2xzPy51bml0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+VW5pdDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuYW1lPVwidW5pdFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJ8K6QycgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJmb3JtR3JvdXAuY29udHJvbHMudW5pdC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy51bml0LmVycm9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd1bml0J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC1tZC02XCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1Hcm91cC5jb250cm9scz8udGFyZ2V0ICYmIHNob3dUYXJnZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCBmb3JtR3JvdXAuY29udHJvbHMudGFyZ2V0LnRvdWNoZWQpICYmXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzPy50YXJnZXQ/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXJnZXRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogMjUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCJcbiAgICAgICAgICAgICAgICAocmFuZ2U/LnRvdWNoZWQgfHwgZm9ybUdyb3VwLmNvbnRyb2xzLnRhcmdldC50b3VjaGVkKSAmJlxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9scy50YXJnZXQuZXJyb3JzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbVZhbGlkYXRpb25FcnJvck1lc3NhZ2VzWyd0YXJnZXQnXSB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgKm5nSWY9XCJyYW5nZSAmJiBzaG93UmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJhbmdlPC9sZWdlbmQ+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgZm9ybUdyb3VwTmFtZT1cInJhbmdlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1pbj8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWluPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJyYW5nZT8udG91Y2hlZCAmJiByYW5nZS5jb250cm9scz8ubWluPy5lcnJvcnNcIj48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3InOiByYW5nZT8udG91Y2hlZCAmJiByYW5nZT8uY29udHJvbHM/Lm1heD8uZXJyb3JzIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cInJhbmdlPy50b3VjaGVkICYmIHJhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiPlxuICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21WYWxpZGF0aW9uRXJyb3JNZXNzYWdlc1snbWF4J10gfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cblxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXRcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cInllbGxvd1JhbmdlXCJcbiAgICAgICpuZ0lmPVwieWVsbG93UmFuZ2UgJiYgc2hvd1llbGxvd1JhbmdlXCJcbiAgICA+XG4gICAgICA8bGVnZW5kIHRyYW5zbGF0ZT5ZZWxsb3cgcmFuZ2U8L2xlZ2VuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNTAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOlxuICAgICAgICAgICAgICAgIChyYW5nZT8udG91Y2hlZCB8fCB5ZWxsb3dSYW5nZT8udG91Y2hlZCkgJiYgeWVsbG93UmFuZ2U/LmNvbnRyb2xzPy5tYXg/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NYXg8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgeWVsbG93UmFuZ2U/LnRvdWNoZWQpICYmIHllbGxvd1JhbmdlLmNvbnRyb2xzPy5tYXg/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGZpZWxkc2V0XG4gICAgICBjbGFzcz1cImM4eS1maWVsZHNldFwiXG4gICAgICBmb3JtR3JvdXBOYW1lPVwicmVkUmFuZ2VcIlxuICAgICAgKm5nSWY9XCJyZWRSYW5nZSAmJiBzaG93UmVkUmFuZ2VcIlxuICAgID5cbiAgICAgIDxsZWdlbmQgdHJhbnNsYXRlPlJlZCByYW5nZTwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2hhcy1lcnJvcic6IChyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2U/LmNvbnRyb2xzPy5taW4/LmVycm9yc1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5NaW48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogNzUgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGM4eS1tZXNzYWdlc1xuICAgICAgICAgICAgICBbc2hvd109XCIocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlLmNvbnRyb2xzPy5taW4/LmVycm9yc1wiXG4gICAgICAgICAgICA+PC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtZXJyb3InOiAocmFuZ2U/LnRvdWNoZWQgfHwgcmVkUmFuZ2U/LnRvdWNoZWQpICYmIHJlZFJhbmdlPy5jb250cm9scz8ubWF4Py5lcnJvcnNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TWF4PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IDEwMCB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzXG4gICAgICAgICAgICAgIFtzaG93XT1cIihyYW5nZT8udG91Y2hlZCB8fCByZWRSYW5nZT8udG91Y2hlZCkgJiYgcmVkUmFuZ2UuY29udHJvbHM/Lm1heD8uZXJyb3JzXCJcbiAgICAgICAgICAgID48L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxmaWVsZHNldFxuICAgIGNsYXNzPVwiYzh5LWZpZWxkc2V0XCJcbiAgICAqbmdJZj1cInNob3dDaGFydEZvcm1cIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJjaGFydFwiXG4gID5cbiAgICA8bGVnZW5kIHRyYW5zbGF0ZT5DaGFydDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJ0aWdodC1ncmlkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29sLXhzLTYgY29sLXNtLTRcIlxuICAgICAgICAqbmdJZj1cInNlbGVjdGFibGVDaGFydFJlbmRlclR5cGVzPy5sZW5ndGggIT09IDBcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlIZWxwQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlbmRlclR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfUkVOREVSX1RZUEVTXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJ0eXBlLnZhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0eXBlLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCJcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXM/Lmxlbmd0aCAhPT0gMFwiXG4gICAgICA+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImNoYXJ0VHlwZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDaGFydCB0eXBlXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGluZVR5cGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgQ0hBUlRfTElORV9UWVBFU1wiXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHlwZS52YWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdHlwZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb2wteHMtNiBjb2wtc20tNFwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0YWJsZUF4aXNUeXBlcz8ubGVuZ3RoICE9PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwieUF4aXNcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgWS1heGlzXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwieUF4aXNUeXBlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0eXBlIG9mIEFYSVNfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldFxuICAgIGNsYXNzPVwiYzh5LWZpZWxkc2V0XCJcbiAgICAqbmdJZj1cInNob3dPbmx5RGlzcGxheUZvcm1cIlxuICAgIGZvcm1Hcm91cE5hbWU9XCJkaXNwbGF5XCJcbiAgPlxuICAgIDxsZWdlbmQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGxheUhlbHBCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2xlZ2VuZD5cbiAgICA8ZGl2IGNsYXNzPVwidGlnaHQtZ3JpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IGNvbC1zbS00XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVuZGVyVHlwZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdHlwZSBvZiBDSEFSVF9SRU5ERVJfVFlQRVNcIlxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHR5cGUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkaXNwbGF5SGVscEJ1dHRvbj5cbiAgPGxhYmVsPlxuICAgIHt7ICdEaXNwbGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBvcG92ZXI9XCJ7eyAnVmFsdWUgZGlzcGxheWVkIHdoZW4gZGF0YSBpcyBhZ2dyZWdhdGVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICA+PC9idXR0b24+XG4gIDwvbGFiZWw+XG48L25nLXRlbXBsYXRlPiJdfQ==