@eqproject/eqp-dynamic-module 2.3.17 → 2.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +5 -3
- package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +17 -7
- package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +7 -7
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +25 -5
- package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +23 -15
- package/esm2020/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.mjs +4 -3
- package/esm2020/lib/components/private/graphs/graphs.component.mjs +166 -0
- package/esm2020/lib/eqp-dynamic-module.module.mjs +6 -3
- package/esm2020/lib/models/dynamicModuleListFormRecordActionsDefault.mjs +3 -2
- package/esm2020/lib/models/dynamicModuleViewModeEnum.mjs +2 -1
- package/esm2020/lib/models/graph.model.mjs +15 -0
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +277 -64
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +275 -64
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/add-formula-field/add-formula-field.component.d.ts +2 -0
- package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +1 -0
- package/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.d.ts +4 -1
- package/lib/components/private/graphs/graphs.component.d.ts +46 -0
- package/lib/eqp-dynamic-module.module.d.ts +11 -10
- package/lib/models/dynamicModuleListFormRecordActionsDefault.d.ts +2 -1
- package/lib/models/dynamicModuleViewModeEnum.d.ts +2 -1
- package/lib/models/graph.model.d.ts +15 -0
- package/package.json +1 -1
|
@@ -78,16 +78,26 @@ export class AddFormulaComponent {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
addListNumberReader() {
|
|
82
|
+
this.counter++;
|
|
83
|
+
const value = "let value" + this.counter + " = 0; let elenco" + this.counter + " = INSERISCI_IL_TUO_ELENCO; if (elenco" + this.counter + " != null && elenco" + this.counter + ".constructor == Array){ for (let i = 0; i < elenco" + this.counter + ".length; i++) { value" + this.counter + " += elenco" + this.counter + "[i]; } } else { value" + this.counter + " = elenco" + this.counter + " }";
|
|
84
|
+
this.addNumber(value);
|
|
85
|
+
}
|
|
86
|
+
addListStringrReader() {
|
|
87
|
+
this.counter++;
|
|
88
|
+
const value = "let value" + this.counter + " = \"\"; let elenco" + this.counter + " = INSERISCI_IL_TUO_ELENCO; if (elenco" + this.counter + " != null && elenco" + this.counter + ".constructor == Array){ for (let i = 0; i < elenco" + this.counter + ".length; i++) { value" + this.counter + " += elenco" + this.counter + "[i]; } } else { value" + this.counter + " = elenco" + this.counter + " }";
|
|
89
|
+
this.addNumber(value);
|
|
90
|
+
}
|
|
81
91
|
addArrayList() {
|
|
82
92
|
this.counter++;
|
|
83
|
-
|
|
93
|
+
const value = "var outputList" + this.counter + " = { \"key\" : value , \"key2\" : value2 }; outputList" + this.counter + ";";
|
|
84
94
|
this.addNumber(value);
|
|
85
95
|
}
|
|
86
96
|
addNumber(value) {
|
|
87
97
|
this.stringaFormula = this.stringaFormula.trim();
|
|
88
98
|
if (UtilityHelperService.isNumeric(value)) {
|
|
89
99
|
if (this.caretPosition != 0) {
|
|
90
|
-
|
|
100
|
+
let substringa = this.stringaFormula.substring(0, this.caretPosition);
|
|
91
101
|
substringa = substringa.trim();
|
|
92
102
|
substringa = substringa + value + this.stringaFormula.substring(this.caretPosition);
|
|
93
103
|
this.stringaFormula = substringa;
|
|
@@ -100,7 +110,7 @@ export class AddFormulaComponent {
|
|
|
100
110
|
else {
|
|
101
111
|
if (value == ".") {
|
|
102
112
|
if (this.caretPosition != 0) {
|
|
103
|
-
|
|
113
|
+
let substringa = this.stringaFormula.substring(0, this.caretPosition);
|
|
104
114
|
substringa = substringa.trim();
|
|
105
115
|
substringa = substringa + value + this.stringaFormula.substring(this.caretPosition);
|
|
106
116
|
this.stringaFormula = substringa;
|
|
@@ -111,7 +121,7 @@ export class AddFormulaComponent {
|
|
|
111
121
|
}
|
|
112
122
|
else {
|
|
113
123
|
if (this.caretPosition != 0) {
|
|
114
|
-
|
|
124
|
+
let substringa = this.stringaFormula.substring(0, this.caretPosition);
|
|
115
125
|
substringa = substringa.trim();
|
|
116
126
|
substringa = substringa + " " + value + this.stringaFormula.substring(this.caretPosition);
|
|
117
127
|
this.stringaFormula = substringa;
|
|
@@ -172,10 +182,10 @@ export class AddFormulaComponent {
|
|
|
172
182
|
}
|
|
173
183
|
}
|
|
174
184
|
AddFormulaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AddFormulaComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
175
|
-
AddFormulaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AddFormulaComponent, selector: "eqp-dynamic-module-add-formula-component", viewQueries: [{ propertyName: "formulaTextArea", first: true, predicate: ["formula"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-9\">\r\n <div class=\"row\">\r\n <div class=\"col-12 pt-2\">\r\n <div class=\"p-1\">\r\n <textarea\r\n name=\"formula\"\r\n #formula\r\n type=\"textarea\"\r\n id=\"formula\"\r\n rows=\"10\"\r\n style=\"width: 100%\"\r\n class=\"droptarget\"\r\n (click)=\"lostFocus(formula)\"\r\n (keyup)=\"lostFocus(formula)\"\r\n (blur)=\"lostFocus(formula)\"\r\n [(ngModel)]=\"stringaFormula\"\r\n ></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"p-1 form-group\">\r\n <form method=\"POST\" class=\"alert alert-secondary\">\r\n <div class=\"w-100\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addArrayList()\"\r\n >\r\n ArrayList\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"\r\n addNumber(\r\n 'if( Condizione ) { se vera } else { se falsa }'\r\n )\r\n \"\r\n >\r\n IF\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('/100')\"\r\n >\r\n %\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-danger\"\r\n (click)=\"clear()\"\r\n >\r\n C\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('/')\"\r\n >\r\n ÷\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,2)')\"\r\n >\r\n x<sup>2</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,3)')\"\r\n >\r\n x<sup>3</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore , potenza )')\"\r\n >\r\n x<sup>y</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber(' * 3.14 ')\"\r\n >\r\n ℼ\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('7')\"\r\n >\r\n 7\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('8')\"\r\n >\r\n 8\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('9')\"\r\n >\r\n 9\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('*')\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sqrt( valore )')\"\r\n >\r\n <sup>2</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( radice , 1/ valore )')\"\r\n >\r\n <sup>y</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log( valore )')\"\r\n >\r\n ln\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log10( valore )')\"\r\n >\r\n log\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('4')\"\r\n >\r\n 4\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('5')\"\r\n >\r\n 5\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('6')\"\r\n >\r\n 6\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('-')\"\r\n >\r\n −\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sin( valore )')\"\r\n >\r\n sin\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.cos( valore )')\"\r\n >\r\n cos\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.tan( valore )')\"\r\n >\r\n tan\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('* 2.718281828459045')\"\r\n >\r\n e\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('1')\"\r\n >\r\n 1\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('2')\"\r\n >\r\n 2\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('3')\"\r\n >\r\n 3\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('+')\"\r\n >\r\n +\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('0')\"\r\n >\r\n 0\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('.')\"\r\n >\r\n .\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"back()\"\r\n >\r\n Annulla\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"save()\"\r\n >\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 p-2 overflow-auto\" style=\"max-height: 80vh;\">\r\n <div\r\n [hidden]=\"fieldNull\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n class=\"example-list\"\r\n >\r\n <div\r\n class=\"example-box\"\r\n draggable=\"true\"\r\n (drag)=\"drag_handler($event)\"\r\n (dragend)=\"dragend_handler($event)\"\r\n (dragenter)=\"dragenter_handler($event)\"\r\n (dragleave)=\"dragleave_handler($event)\"\r\n (dragover)=\"dragover_handler($event)\"\r\n (dragstart)=\"dragstart_handler($event)\"\r\n (drop)=\"drop_handler($event)\"\r\n [attr.data-drag-data]=\"field.Label\"\r\n *ngFor=\"let field of Fields\"\r\n cdkDrag\r\n >\r\n {{ field.Label }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".col,.col-2,.col-12{padding-left:5px;padding-right:5px}.btn-xl{font-size:1.5rem;line-height:.9}.btn-sm{border-radius:0}@media (min-width: 420px){.d-lt-none{display:none!important}.d-lt-inline{display:inline!important}.d-lt-inline-block{display:inline-block!important}.d-lt-block{display:block!important}.d-lt-table{display:table!important}.d-lt-table-row{display:table-row!important}.d-lt-table-cell{display:table-cell!important}.d-lt-flex{display:flex!important}.d-lt-inline-flex{display:inline-flex!important}.mycol-2{flex:0 0 20%;max-width:20%}}.preview{padding:20px 10px;border-right:solid 1px #ccc;color:#ff0000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background-color:#0ff;font-size:14px;flex-grow:1;flex-basis:0}.example-box{padding:20px 10px;border-right:solid 1px #ccc;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background:white;font-size:14px;flex-grow:1;flex-basis:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list{min-width:100%;max-width:100%;border:solid 1px #ccc;min-height:60px;background:white;border-radius:4px;overflow:hidden}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-placeholder{opacity:0}.droptarget{float:left;margin:15px 100px 15px 15px;padding:10px;border:1px solid #aaaaaa}.blink{animation:blink-animation .4s steps(5,start) infinite;-webkit-animation:blink-animation .4s steps(5,start) infinite}@keyframes blink-animation{to{visibility:hidden}}.categories-item-drag{color:red!important;text-align:center;position:relative;line-height:2rem;padding:-.5rem}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
185
|
+
AddFormulaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AddFormulaComponent, selector: "eqp-dynamic-module-add-formula-component", viewQueries: [{ propertyName: "formulaTextArea", first: true, predicate: ["formula"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-9\">\r\n <div class=\"row\">\r\n <div class=\"col-12 pt-2\">\r\n <div class=\"p-1\">\r\n <textarea\r\n name=\"formula\"\r\n #formula\r\n type=\"textarea\"\r\n id=\"formula\"\r\n rows=\"10\"\r\n style=\"width: 100%\"\r\n class=\"droptarget\"\r\n (click)=\"lostFocus(formula)\"\r\n (keyup)=\"lostFocus(formula)\"\r\n (blur)=\"lostFocus(formula)\"\r\n [(ngModel)]=\"stringaFormula\"\r\n ></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"p-1 form-group\">\r\n <form method=\"POST\" class=\"alert alert-secondary\">\r\n <div class=\"w-100\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col\"></div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addListStringrReader()\"\r\n >\r\n Leggi Elenco Txt\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addListNumberReader()\"\r\n >\r\n Leggi Elenco Num\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addArrayList()\"\r\n >\r\n ArrayList\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"\r\n addNumber(\r\n 'if( Condizione ) { se vera } else { se falsa }'\r\n )\r\n \"\r\n >\r\n IF\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('/100')\"\r\n >\r\n %\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-danger\"\r\n (click)=\"clear()\"\r\n >\r\n C\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('/')\"\r\n >\r\n ÷\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,2)')\"\r\n >\r\n x<sup>2</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,3)')\"\r\n >\r\n x<sup>3</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore , potenza )')\"\r\n >\r\n x<sup>y</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber(' * 3.14 ')\"\r\n >\r\n ℼ\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('7')\"\r\n >\r\n 7\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('8')\"\r\n >\r\n 8\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('9')\"\r\n >\r\n 9\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('*')\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sqrt( valore )')\"\r\n >\r\n <sup>2</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( radice , 1/ valore )')\"\r\n >\r\n <sup>y</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log( valore )')\"\r\n >\r\n ln\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log10( valore )')\"\r\n >\r\n log\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('4')\"\r\n >\r\n 4\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('5')\"\r\n >\r\n 5\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('6')\"\r\n >\r\n 6\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('-')\"\r\n >\r\n −\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sin( valore )')\"\r\n >\r\n sin\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.cos( valore )')\"\r\n >\r\n cos\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.tan( valore )')\"\r\n >\r\n tan\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('* 2.718281828459045')\"\r\n >\r\n e\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('1')\"\r\n >\r\n 1\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('2')\"\r\n >\r\n 2\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('3')\"\r\n >\r\n 3\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('+')\"\r\n >\r\n +\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('0')\"\r\n >\r\n 0\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('.')\"\r\n >\r\n .\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"back()\"\r\n >\r\n Annulla\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"save()\"\r\n >\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 p-2 overflow-auto\" style=\"max-height: 80vh;\">\r\n <div\r\n [hidden]=\"fieldNull\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n class=\"example-list\"\r\n >\r\n <div\r\n class=\"example-box\"\r\n draggable=\"true\"\r\n (drag)=\"drag_handler($event)\"\r\n (dragend)=\"dragend_handler($event)\"\r\n (dragenter)=\"dragenter_handler($event)\"\r\n (dragleave)=\"dragleave_handler($event)\"\r\n (dragover)=\"dragover_handler($event)\"\r\n (dragstart)=\"dragstart_handler($event)\"\r\n (drop)=\"drop_handler($event)\"\r\n [attr.data-drag-data]=\"field.Label\"\r\n *ngFor=\"let field of Fields\"\r\n cdkDrag\r\n >\r\n {{ field.Label }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".col,.col-2,.col-12{padding-left:5px;padding-right:5px}.btn-xl{font-size:1.5rem;line-height:.9}.btn-sm{border-radius:0}@media (min-width: 420px){.d-lt-none{display:none!important}.d-lt-inline{display:inline!important}.d-lt-inline-block{display:inline-block!important}.d-lt-block{display:block!important}.d-lt-table{display:table!important}.d-lt-table-row{display:table-row!important}.d-lt-table-cell{display:table-cell!important}.d-lt-flex{display:flex!important}.d-lt-inline-flex{display:inline-flex!important}.mycol-2{flex:0 0 20%;max-width:20%}}.preview{padding:20px 10px;border-right:solid 1px #ccc;color:#ff0000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background-color:#0ff;font-size:14px;flex-grow:1;flex-basis:0}.example-box{padding:20px 10px;border-right:solid 1px #ccc;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background:white;font-size:14px;flex-grow:1;flex-basis:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list{min-width:100%;max-width:100%;border:solid 1px #ccc;min-height:60px;background:white;border-radius:4px;overflow:hidden}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-placeholder{opacity:0}.droptarget{float:left;margin:15px 100px 15px 15px;padding:10px;border:1px solid #aaaaaa}.blink{animation:blink-animation .4s steps(5,start) infinite;-webkit-animation:blink-animation .4s steps(5,start) infinite}@keyframes blink-animation{to{visibility:hidden}}.categories-item-drag{color:red!important;text-align:center;position:relative;line-height:2rem;padding:-.5rem}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
176
186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AddFormulaComponent, decorators: [{
|
|
177
187
|
type: Component,
|
|
178
|
-
args: [{ selector: 'eqp-dynamic-module-add-formula-component', template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-9\">\r\n <div class=\"row\">\r\n <div class=\"col-12 pt-2\">\r\n <div class=\"p-1\">\r\n <textarea\r\n name=\"formula\"\r\n #formula\r\n type=\"textarea\"\r\n id=\"formula\"\r\n rows=\"10\"\r\n style=\"width: 100%\"\r\n class=\"droptarget\"\r\n (click)=\"lostFocus(formula)\"\r\n (keyup)=\"lostFocus(formula)\"\r\n (blur)=\"lostFocus(formula)\"\r\n [(ngModel)]=\"stringaFormula\"\r\n ></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"p-1 form-group\">\r\n <form method=\"POST\" class=\"alert alert-secondary\">\r\n <div class=\"w-100\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addArrayList()\"\r\n >\r\n ArrayList\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"\r\n addNumber(\r\n 'if( Condizione ) { se vera } else { se falsa }'\r\n )\r\n \"\r\n >\r\n IF\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('/100')\"\r\n >\r\n %\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-danger\"\r\n (click)=\"clear()\"\r\n >\r\n C\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('/')\"\r\n >\r\n ÷\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,2)')\"\r\n >\r\n x<sup>2</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,3)')\"\r\n >\r\n x<sup>3</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore , potenza )')\"\r\n >\r\n x<sup>y</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber(' * 3.14 ')\"\r\n >\r\n ℼ\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('7')\"\r\n >\r\n 7\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('8')\"\r\n >\r\n 8\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('9')\"\r\n >\r\n 9\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('*')\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sqrt( valore )')\"\r\n >\r\n <sup>2</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( radice , 1/ valore )')\"\r\n >\r\n <sup>y</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log( valore )')\"\r\n >\r\n ln\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log10( valore )')\"\r\n >\r\n log\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('4')\"\r\n >\r\n 4\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('5')\"\r\n >\r\n 5\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('6')\"\r\n >\r\n 6\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('-')\"\r\n >\r\n −\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sin( valore )')\"\r\n >\r\n sin\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.cos( valore )')\"\r\n >\r\n cos\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.tan( valore )')\"\r\n >\r\n tan\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('* 2.718281828459045')\"\r\n >\r\n e\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('1')\"\r\n >\r\n 1\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('2')\"\r\n >\r\n 2\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('3')\"\r\n >\r\n 3\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('+')\"\r\n >\r\n +\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('0')\"\r\n >\r\n 0\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('.')\"\r\n >\r\n .\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"back()\"\r\n >\r\n Annulla\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"save()\"\r\n >\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 p-2 overflow-auto\" style=\"max-height: 80vh;\">\r\n <div\r\n [hidden]=\"fieldNull\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n class=\"example-list\"\r\n >\r\n <div\r\n class=\"example-box\"\r\n draggable=\"true\"\r\n (drag)=\"drag_handler($event)\"\r\n (dragend)=\"dragend_handler($event)\"\r\n (dragenter)=\"dragenter_handler($event)\"\r\n (dragleave)=\"dragleave_handler($event)\"\r\n (dragover)=\"dragover_handler($event)\"\r\n (dragstart)=\"dragstart_handler($event)\"\r\n (drop)=\"drop_handler($event)\"\r\n [attr.data-drag-data]=\"field.Label\"\r\n *ngFor=\"let field of Fields\"\r\n cdkDrag\r\n >\r\n {{ field.Label }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".col,.col-2,.col-12{padding-left:5px;padding-right:5px}.btn-xl{font-size:1.5rem;line-height:.9}.btn-sm{border-radius:0}@media (min-width: 420px){.d-lt-none{display:none!important}.d-lt-inline{display:inline!important}.d-lt-inline-block{display:inline-block!important}.d-lt-block{display:block!important}.d-lt-table{display:table!important}.d-lt-table-row{display:table-row!important}.d-lt-table-cell{display:table-cell!important}.d-lt-flex{display:flex!important}.d-lt-inline-flex{display:inline-flex!important}.mycol-2{flex:0 0 20%;max-width:20%}}.preview{padding:20px 10px;border-right:solid 1px #ccc;color:#ff0000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background-color:#0ff;font-size:14px;flex-grow:1;flex-basis:0}.example-box{padding:20px 10px;border-right:solid 1px #ccc;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background:white;font-size:14px;flex-grow:1;flex-basis:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list{min-width:100%;max-width:100%;border:solid 1px #ccc;min-height:60px;background:white;border-radius:4px;overflow:hidden}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-placeholder{opacity:0}.droptarget{float:left;margin:15px 100px 15px 15px;padding:10px;border:1px solid #aaaaaa}.blink{animation:blink-animation .4s steps(5,start) infinite;-webkit-animation:blink-animation .4s steps(5,start) infinite}@keyframes blink-animation{to{visibility:hidden}}.categories-item-drag{color:red!important;text-align:center;position:relative;line-height:2rem;padding:-.5rem}\n"] }]
|
|
188
|
+
args: [{ selector: 'eqp-dynamic-module-add-formula-component', template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-9\">\r\n <div class=\"row\">\r\n <div class=\"col-12 pt-2\">\r\n <div class=\"p-1\">\r\n <textarea\r\n name=\"formula\"\r\n #formula\r\n type=\"textarea\"\r\n id=\"formula\"\r\n rows=\"10\"\r\n style=\"width: 100%\"\r\n class=\"droptarget\"\r\n (click)=\"lostFocus(formula)\"\r\n (keyup)=\"lostFocus(formula)\"\r\n (blur)=\"lostFocus(formula)\"\r\n [(ngModel)]=\"stringaFormula\"\r\n ></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"p-1 form-group\">\r\n <form method=\"POST\" class=\"alert alert-secondary\">\r\n <div class=\"w-100\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col\"></div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addListStringrReader()\"\r\n >\r\n Leggi Elenco Txt\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addListNumberReader()\"\r\n >\r\n Leggi Elenco Num\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addArrayList()\"\r\n >\r\n ArrayList\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"\r\n addNumber(\r\n 'if( Condizione ) { se vera } else { se falsa }'\r\n )\r\n \"\r\n >\r\n IF\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('/100')\"\r\n >\r\n %\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-danger\"\r\n (click)=\"clear()\"\r\n >\r\n C\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('/')\"\r\n >\r\n ÷\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,2)')\"\r\n >\r\n x<sup>2</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore ,3)')\"\r\n >\r\n x<sup>3</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( valore , potenza )')\"\r\n >\r\n x<sup>y</sup>\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber(' * 3.14 ')\"\r\n >\r\n ℼ\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('7')\"\r\n >\r\n 7\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('8')\"\r\n >\r\n 8\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('9')\"\r\n >\r\n 9\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('*')\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sqrt( valore )')\"\r\n >\r\n <sup>2</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.pow( radice , 1/ valore )')\"\r\n >\r\n <sup>y</sup>√x\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log( valore )')\"\r\n >\r\n ln\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.log10( valore )')\"\r\n >\r\n log\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('4')\"\r\n >\r\n 4\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('5')\"\r\n >\r\n 5\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('6')\"\r\n >\r\n 6\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('-')\"\r\n >\r\n −\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.sin( valore )')\"\r\n >\r\n sin\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.cos( valore )')\"\r\n >\r\n cos\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addSymbol('Math.tan( valore )')\"\r\n >\r\n tan\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-secondary\"\r\n (click)=\"addNumber('* 2.718281828459045')\"\r\n >\r\n e\r\n </button>\r\n </div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('1')\"\r\n >\r\n 1\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('2')\"\r\n >\r\n 2\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('3')\"\r\n >\r\n 3\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-xl btn-info\"\r\n (click)=\"addNumber('+')\"\r\n >\r\n +\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col d-lt-flex\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n <div class=\"col\"></div>\r\n\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('0')\"\r\n >\r\n 0\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-success\"\r\n (click)=\"addNumber('.')\"\r\n >\r\n .\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"back()\"\r\n >\r\n Annulla\r\n </button>\r\n </div>\r\n <div class=\"col d-lt-flex\">\r\n <button\r\n class=\"form-control btn btn-sm btn-primary\"\r\n (click)=\"save()\"\r\n >\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 p-2 overflow-auto\" style=\"max-height: 80vh;\">\r\n <div\r\n [hidden]=\"fieldNull\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n class=\"example-list\"\r\n >\r\n <div\r\n class=\"example-box\"\r\n draggable=\"true\"\r\n (drag)=\"drag_handler($event)\"\r\n (dragend)=\"dragend_handler($event)\"\r\n (dragenter)=\"dragenter_handler($event)\"\r\n (dragleave)=\"dragleave_handler($event)\"\r\n (dragover)=\"dragover_handler($event)\"\r\n (dragstart)=\"dragstart_handler($event)\"\r\n (drop)=\"drop_handler($event)\"\r\n [attr.data-drag-data]=\"field.Label\"\r\n *ngFor=\"let field of Fields\"\r\n cdkDrag\r\n >\r\n {{ field.Label }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".col,.col-2,.col-12{padding-left:5px;padding-right:5px}.btn-xl{font-size:1.5rem;line-height:.9}.btn-sm{border-radius:0}@media (min-width: 420px){.d-lt-none{display:none!important}.d-lt-inline{display:inline!important}.d-lt-inline-block{display:inline-block!important}.d-lt-block{display:block!important}.d-lt-table{display:table!important}.d-lt-table-row{display:table-row!important}.d-lt-table-cell{display:table-cell!important}.d-lt-flex{display:flex!important}.d-lt-inline-flex{display:inline-flex!important}.mycol-2{flex:0 0 20%;max-width:20%}}.preview{padding:20px 10px;border-right:solid 1px #ccc;color:#ff0000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background-color:#0ff;font-size:14px;flex-grow:1;flex-basis:0}.example-box{padding:20px 10px;border-right:solid 1px #ccc;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;text-align:center;cursor:move;background:white;font-size:14px;flex-grow:1;flex-basis:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list{min-width:100%;max-width:100%;border:solid 1px #ccc;min-height:60px;background:white;border-radius:4px;overflow:hidden}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-placeholder{opacity:0}.droptarget{float:left;margin:15px 100px 15px 15px;padding:10px;border:1px solid #aaaaaa}.blink{animation:blink-animation .4s steps(5,start) infinite;-webkit-animation:blink-animation .4s steps(5,start) infinite}@keyframes blink-animation{to{visibility:hidden}}.categories-item-drag{color:red!important;text-align:center;position:relative;line-height:2rem;padding:-.5rem}\n"] }]
|
|
179
189
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
180
190
|
type: Inject,
|
|
181
191
|
args: [MAT_DIALOG_DATA]
|
|
@@ -192,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
192
202
|
type: Component,
|
|
193
203
|
args: [{ selector: 'dialog-data-example', template: "<h1 mat-dialog-title>Errore!</h1>\r\n<div mat-dialog-content>\r\n La funzione inserita contiene parentesi non chiuse! prima di salvare controlla la funzione.\r\n \r\n</div>" }]
|
|
194
204
|
}], ctorParameters: function () { return []; } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm11bGEtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2FkZC1mb3JtdWxhLWZpZWxkL2FkZC1mb3JtdWxhLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybXVsYS1maWVsZC9hZGQtZm9ybXVsYS1maWVsZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybXVsYS1maWVsZC9kaWFsb2ctZGF0YS1leGFtcGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUE0QixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFZLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFTaEYsTUFBTSxPQUFPLG1CQUFtQjtJQVM5QixZQUE0QyxJQUFTLEVBQzVDLFNBQTRDLEVBQzVDLE1BQWlCO1FBRmtCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFDNUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVIxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLFlBQU8sR0FBRyxJ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QVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFVO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0lBQ2pELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ2hDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDckQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O2dIQWxMVSxtQkFBbUIsa0JBU1YsZUFBZTtvR0FUeEIsbUJBQW1CLGlOQ2JoQywyNGFBZ1dBOzJGRG5WYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsMENBQTBDOzswQkFjdkMsTUFBTTsyQkFBQyxlQUFlOytGQVBNLGVBQWU7c0JBQXZELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUF3THpDLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsZ0JBQWUsQ0FBQzs7b0hBREwsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMkRFdk1wQyxnTEFJTTsyRkZtTU8sdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyxNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnXHJcbmltcG9ydCB7IEZvcm11bGEgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL2Zvcm11bGEubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1mb3JtdWxhLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtZm9ybXVsYS1maWVsZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQWRkRm9ybXVsYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZm9ybXVsYScsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtdWxhVGV4dEFyZWE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgY2FyZXRQb3NpdGlvbjogbnVtYmVyID0gMDtcclxuICBmaWVsZE51bGw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGZvcm11bGEgPSBuZXcgRm9ybXVsYSgnMCcpO1xyXG4gIHN0cmluZ2FGb3JtdWxhOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvdW50ZXI6IG51bWJlciA9MDtcclxuICBGaWVsZHM6IEFycmF5PEJhc2VGaWVsZD4gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBZGRGb3JtdWxhQ29tcG9uZW50PixcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZpZWxkcyA9IHRoaXMuZGF0YS5maWVsZHM7XHJcbiAgICBpZiAodGhpcy5GaWVsZHMgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBpZiAodGhpcy5GaWVsZHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICB0aGlzLmZpZWxkTnVsbCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWVsZE51bGwgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuZm9ybXVsYSAhPSB1bmRlZmluZWQgJiYgdGhpcy5kYXRhLmZvcm11bGEgIT0gbnVsbCAmJiB0aGlzLmRhdGEuZm9ybXVsYSAhPSBcIlwiICYmIHRoaXMuZGF0YS5mb3JtdWxhICE9IFwidW5kZWZpbmVkXCIgKSB7XHJcbiAgICAgIHRoaXMuc3RyaW5nYUZvcm11bGEgPSB0aGlzLmRhdGEuZm9ybXVsYTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJmb3JtdWxhXCIsIHRoaXMuZGF0YS5mb3JtdWxhKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImZvcm11bGFcIiwgXCJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiBhbnkge1xyXG4gICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IFwiXCI7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FyZXRQb3NpdGlvbiA9IHRoaXMuZm9ybXVsYVRleHRBcmVhLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgfVxyXG4gIGxvc3RGb2N1cyh0ZXh0QXJlYSkge1xyXG4gICAgdGhpcy5jYXJldFBvc2l0aW9uID0gdGV4dEFyZWEuc2VsZWN0aW9uU3RhcnQ7XHJcblxyXG4gIH1cclxuICBiYWNrKCkge1xyXG5cclxuICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybXVsYScpICE9IHVuZGVmaW5lZCB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybXVsYScpICE9IG51bGwgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm11bGEnKSAhPSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgZm9ybXVsYTogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm11bGEnKS50b1N0cmluZygpIH0pO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZm9ybXVsYScpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IGZvcm11bGE6IFwiIFwiIH0pO1xyXG4gIH1cclxuICBhZGRTeW1ib2wodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEudHJpbSgpXHJcbiAgICBsZXQgbGFzdENoYXIgPSB0aGlzLnN0cmluZ2FGb3JtdWxhLmNoYXJBdCh0aGlzLnN0cmluZ2FGb3JtdWxhLmxlbmd0aCAtIDEpO1xyXG4gICAgaWYgKGxhc3RDaGFyID09ICcrJyB8fCBsYXN0Q2hhciA9PSAnLScgfHwgbGFzdENoYXIgPT0gJyonIHx8IGxhc3RDaGFyID09ICcvJykge1xyXG4gICAgICBpZiAodGhpcy5jYXJldFBvc2l0aW9uICE9IDApIHtcclxuICAgICAgICB2YXIgc3Vic3RyaW5nYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKDAsIHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgc3Vic3RyaW5nYSA9IHN1YnN0cmluZ2EudHJpbSgpO1xyXG4gICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhICsgXCIgXCIgKyB2YWx1ZSArIHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHN1YnN0cmluZ2E7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEgKyBcIiBcIiArIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNhcmV0UG9zaXRpb24gIT0gMCkge1xyXG4gICAgICAgIHZhciBzdWJzdHJpbmdhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcoMCwgdGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYS50cmltKCk7XHJcbiAgICAgICAgc3Vic3RyaW5nYSA9IHN1YnN0cmluZ2EgKyBcIiAqIFwiICsgdmFsdWUgKyB0aGlzLnN0cmluZ2FGb3JtdWxhLnN1YnN0cmluZyh0aGlzLmNhcmV0UG9zaXRpb24pO1xyXG4gICAgICAgIHRoaXMuc3RyaW5nYUZvcm11bGEgPSBzdWJzdHJpbmdhO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3RyaW5nYUZvcm11bGEgPSB0aGlzLnN0cmluZ2FGb3JtdWxhICsgXCIgKiBcIiArIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBhZGRBcnJheUxpc3QoKTp2b2lke1xyXG4gICAgdGhpcy5jb3VudGVyKys7XHJcbiAgICB2YXIgdmFsdWUgPSBcInZhciBvdXRwdXRMaXN0XCIrIHRoaXMuY291bnRlcitcIiA9IHsgXFxcImtleVxcXCIgOiB2YWx1ZSAsIFxcXCJrZXkyXFxcIiA6IHZhbHVlMiB9OyBvdXRwdXRMaXN0XCIrdGhpcy5jb3VudGVyK1wiO1wiO1xyXG4gICAgdGhpcy5hZGROdW1iZXIodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkTnVtYmVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyaW5nYUZvcm11bGEgPSB0aGlzLnN0cmluZ2FGb3JtdWxhLnRyaW0oKTtcclxuICAgIGlmIChVdGlsaXR5SGVscGVyU2VydmljZS5pc051bWVyaWModmFsdWUpKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhcmV0UG9zaXRpb24gIT0gMCkge1xyXG4gICAgICAgIHZhciBzdWJzdHJpbmdhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcoMCwgdGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYS50cmltKCk7XHJcbiAgICAgICAgc3Vic3RyaW5nYSA9IHN1YnN0cmluZ2EgKyB2YWx1ZSArIHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHN1YnN0cmluZ2E7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEgKyB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb24gKz0gMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodmFsdWUgPT0gXCIuXCIpIHtcclxuICAgICAgICBpZiAodGhpcy5jYXJldFBvc2l0aW9uICE9IDApIHtcclxuICAgICAgICAgIHZhciBzdWJzdHJpbmdhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcoMCwgdGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhLnRyaW0oKTtcclxuICAgICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhICsgdmFsdWUgKyB0aGlzLnN0cmluZ2FGb3JtdWxhLnN1YnN0cmluZyh0aGlzLmNhcmV0UG9zaXRpb24pO1xyXG4gICAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHN1YnN0cmluZ2E7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEgKyB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FyZXRQb3NpdGlvbiAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgc3Vic3RyaW5nYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKDAsIHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYS50cmltKCk7XHJcbiAgICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYSArIFwiIFwiICsgdmFsdWUgKyB0aGlzLnN0cmluZ2FGb3JtdWxhLnN1YnN0cmluZyh0aGlzLmNhcmV0UG9zaXRpb24pO1xyXG4gICAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHN1YnN0cmluZ2E7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEgKyBcIiBcIiArIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb24gKz0gMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS50cmltKCk7XHJcbiAgICBpZiAoVXRpbGl0eUhlbHBlclNlcnZpY2Uuc3RyaW5nQ2hlY2tQYXJlbnRlc2lzKHRoaXMuc3RyaW5nYUZvcm11bGEpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmb3JtdWxhJyk7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgZm9ybXVsYTogdGhpcy5zdHJpbmdhRm9ybXVsYSB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nRGF0YUV4YW1wbGVEaWFsb2csIHtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnX2hhbmRsZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdmFyIGRhdGEgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcIlRleHRcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ2VuZF9oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnRhcmdldC5wcmV2aWV3LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXZlbnQudGFyZ2V0LnByZXZpZXcpO1xyXG4gICAgdmFyIGRhdGEgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcIlRleHRcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ2VudGVyX2hhbmRsZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jbGFzc05hbWUgPT0gXCJkcm9wdGFyZ2V0XCIpIHtcclxuICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwibGlnaHRibHVlXCI7XHJcbiAgICAgIGV2ZW50LnRhcmdldC5zdHlsZS5ib3JkZXIgPSBcIjNweCBkb3R0ZWQgcmVkXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ2xlYXZlX2hhbmRsZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kID0gXCJ3aGl0ZVwiO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jbGFzc05hbWUgPT0gXCJkcm9wdGFyZ2V0XCIpIHtcclxuICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJvcmRlciA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ3N0YXJ0X2hhbmRsZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgcHJldmlldyA9IGV2ZW50LnRhcmdldC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICBldmVudC50YXJnZXQucHJldmlldyA9IHByZXZpZXc7XHJcbiAgICBwcmV2aWV3LmNsYXNzTmFtZSA9ICdwcmV2aWV3JztcclxuICAgIHByZXZpZXcuc3R5bGUuY3NzVGV4dCA9IGBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTEwMCU7IGxlZnQ6IC0xMDAlOyB3aWR0aDogJHtldmVudC50YXJnZXQub2Zmc2V0V2lkdGh9cHg7IGA7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHByZXZpZXcpO1xyXG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShwcmV2aWV3LCAwLCAwKTtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywgXCJyZWMuXCIgKyBldmVudC50YXJnZXQuZGF0YXNldC5kcmFnRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJvcF9oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKFwiVGV4dFwiKTtcclxuICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZCA9IFwid2hpdGVcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnb3Zlcl9oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZCA9IFwibGlnaHR5ZWxsb3dcIjtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkaWFsb2ctZGF0YS1leGFtcGxlJyxcclxuICB0ZW1wbGF0ZVVybDogJ2RpYWxvZy1kYXRhLWV4YW1wbGUuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dEYXRhRXhhbXBsZURpYWxvZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59IiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwdC0yXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgIG5hbWU9XCJmb3JtdWxhXCJcclxuICAgICAgICAgICAgICAjZm9ybXVsYVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJmb3JtdWxhXCJcclxuICAgICAgICAgICAgICByb3dzPVwiMTBcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcHRhcmdldFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImxvc3RGb2N1cyhmb3JtdWxhKVwiXHJcbiAgICAgICAgICAgICAgKGtleXVwKT1cImxvc3RGb2N1cyhmb3JtdWxhKVwiXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwibG9zdEZvY3VzKGZvcm11bGEpXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0cmluZ2FGb3JtdWxhXCJcclxuICAgICAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xIGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGZvcm0gbWV0aG9kPVwiUE9TVFwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEFycmF5TGlzdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBcnJheUxpc3RcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTnVtYmVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdpZiggQ29uZGl6aW9uZSApIHsgc2UgdmVyYSB9IGVsc2UgeyBzZSBmYWxzYSB9J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIElGXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcvMTAwJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICVcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi14bCBidG4taW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcvJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICZkaXZpZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC5wb3coIHZhbG9yZSAsMiknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgeDxzdXA+Mjwvc3VwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC5wb3coIHZhbG9yZSAsMyknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgeDxzdXA+Mzwvc3VwPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC5wb3coIHZhbG9yZSAsIHBvdGVuemEgKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB4PHN1cD55PC9zdXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcgKiAzLjE0ICcpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAmI3gyMTNDO1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgN1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgOFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgOVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi14bCBidG4taW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcqJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICZ0aW1lcztcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLnNxcnQoIHZhbG9yZSApJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdXA+Mjwvc3VwPiZyYWRpYzt4XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLnBvdyggcmFkaWNlICwgMS8gdmFsb3JlICknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN1cD55PC9zdXA+JnJhZGljO3hcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRTeW1ib2woJ01hdGgubG9nKCB2YWxvcmUgKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBsblxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC5sb2cxMCggdmFsb3JlICknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgNFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgNVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzYnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgNlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi14bCBidG4taW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCctJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICZtaW51cztcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLnNpbiggdmFsb3JlICknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC5jb3MoIHZhbG9yZSApJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIGNvc1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRTeW1ib2woJ01hdGgudGFuKCB2YWxvcmUgKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB0YW5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcqIDIuNzE4MjgxODI4NDU5MDQ1JylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIGVcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignMScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignMicpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignMycpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXhsIGJ0bi1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJysnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgJiM0MztcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJzAnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgMFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJy4nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgLlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIEFubnVsbGFcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBTYWx2YVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBwLTIgb3ZlcmZsb3ctYXV0b1wiIHN0eWxlPVwibWF4LWhlaWdodDogODB2aDtcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtoaWRkZW5dPVwiZmllbGROdWxsXCJcclxuICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXHJcbiAgICAgICAgY2xhc3M9XCJleGFtcGxlLWxpc3RcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJleGFtcGxlLWJveFwiXHJcbiAgICAgICAgICBkcmFnZ2FibGU9XCJ0cnVlXCJcclxuICAgICAgICAgIChkcmFnKT1cImRyYWdfaGFuZGxlcigkZXZlbnQpXCJcclxuICAgICAgICAgIChkcmFnZW5kKT1cImRyYWdlbmRfaGFuZGxlcigkZXZlbnQpXCJcclxuICAgICAgICAgIChkcmFnZW50ZXIpPVwiZHJhZ2VudGVyX2hhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZHJhZ2xlYXZlKT1cImRyYWdsZWF2ZV9oYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgKGRyYWdvdmVyKT1cImRyYWdvdmVyX2hhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdzdGFydF9oYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgKGRyb3ApPVwiZHJvcF9oYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1kcmFnLWRhdGFdPVwiZmllbGQuTGFiZWxcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIEZpZWxkc1wiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZmllbGQuTGFiZWwgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPkVycm9yZSE8L2gxPlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICBMYSBmdW56aW9uZSBpbnNlcml0YSBjb250aWVuZSBwYXJlbnRlc2kgbm9uIGNoaXVzZSEgcHJpbWEgZGkgc2FsdmFyZSBjb250cm9sbGEgbGEgZnVuemlvbmUuXHJcbiAgXHJcbjwvZGl2PiJdfQ==
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm11bGEtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2FkZC1mb3JtdWxhLWZpZWxkL2FkZC1mb3JtdWxhLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybXVsYS1maWVsZC9hZGQtZm9ybXVsYS1maWVsZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybXVsYS1maWVsZC9kaWFsb2ctZGF0YS1leGFtcGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUE0QixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFTaEYsTUFBTSxPQUFPLG1CQUFtQjtJQVM5QixZQUE0QyxJQUFTLEVBQzVDLFNBQTRDLEVBQzVDLE1BQWlCO1FBRmtCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFDNUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVIxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLFlBQU8sR0FBRyxJ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QUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBVTtRQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUNqRCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBVTtRQUNoQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ3JELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOztnSEEvTFUsbUJBQW1CLGtCQVNWLGVBQWU7b0dBVHhCLG1CQUFtQixpTkNiaEMsMDliQThXQTsyRkRqV2EsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLDBDQUEwQzs7MEJBY3ZDLE1BQU07MkJBQUMsZUFBZTsrRkFQTSxlQUFlO3NCQUF2RCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBcU16QyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLGdCQUFnQixDQUFDOztvSEFETix1QkFBdUI7d0dBQXZCLHVCQUF1QiwyREVwTnBDLGdMQUlNOzJGRmdOTyx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnXHJcbmltcG9ydCB7IEZvcm11bGEgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL2Zvcm11bGEubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1mb3JtdWxhLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtZm9ybXVsYS1maWVsZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQWRkRm9ybXVsYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZm9ybXVsYScsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtdWxhVGV4dEFyZWE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgY2FyZXRQb3NpdGlvbjogbnVtYmVyID0gMDtcclxuICBmaWVsZE51bGw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGZvcm11bGEgPSBuZXcgRm9ybXVsYSgnMCcpO1xyXG4gIHN0cmluZ2FGb3JtdWxhOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvdW50ZXI6IG51bWJlciA9IDA7XHJcbiAgRmllbGRzOiBBcnJheTxCYXNlRmllbGQ+ID0gW107XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWRkRm9ybXVsYUNvbXBvbmVudD4sXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5GaWVsZHMgPSB0aGlzLmRhdGEuZmllbGRzO1xyXG4gICAgaWYgKHRoaXMuRmllbGRzICE9IHVuZGVmaW5lZClcclxuICAgICAgaWYgKHRoaXMuRmllbGRzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZE51bGwgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmllbGROdWxsID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLmZvcm11bGEgIT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YS5mb3JtdWxhICE9IG51bGwgJiYgdGhpcy5kYXRhLmZvcm11bGEgIT0gXCJcIiAmJiB0aGlzLmRhdGEuZm9ybXVsYSAhPSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIHRoaXMuc3RyaW5nYUZvcm11bGEgPSB0aGlzLmRhdGEuZm9ybXVsYTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJmb3JtdWxhXCIsIHRoaXMuZGF0YS5mb3JtdWxhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiZm9ybXVsYVwiLCBcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IGFueSB7XHJcbiAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gXCJcIjtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXJldFBvc2l0aW9uID0gdGhpcy5mb3JtdWxhVGV4dEFyZWEubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICB9XHJcbiAgbG9zdEZvY3VzKHRleHRBcmVhKSB7XHJcbiAgICB0aGlzLmNhcmV0UG9zaXRpb24gPSB0ZXh0QXJlYS5zZWxlY3Rpb25TdGFydDtcclxuXHJcbiAgfVxyXG4gIGJhY2soKSB7XHJcblxyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtdWxhJykgIT0gdW5kZWZpbmVkIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtdWxhJykgIT0gbnVsbCB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybXVsYScpICE9IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBmb3JtdWxhOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybXVsYScpLnRvU3RyaW5nKCkgfSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmb3JtdWxhJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgZm9ybXVsYTogXCIgXCIgfSk7XHJcbiAgfVxyXG4gIGFkZFN5bWJvbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS50cmltKClcclxuICAgIGxldCBsYXN0Q2hhciA9IHRoaXMuc3RyaW5nYUZvcm11bGEuY2hhckF0KHRoaXMuc3RyaW5nYUZvcm11bGEubGVuZ3RoIC0gMSk7XHJcbiAgICBpZiAobGFzdENoYXIgPT0gJysnIHx8IGxhc3RDaGFyID09ICctJyB8fCBsYXN0Q2hhciA9PSAnKicgfHwgbGFzdENoYXIgPT0gJy8nKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhcmV0UG9zaXRpb24gIT0gMCkge1xyXG4gICAgICAgIHZhciBzdWJzdHJpbmdhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcoMCwgdGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYS50cmltKCk7XHJcbiAgICAgICAgc3Vic3RyaW5nYSA9IHN1YnN0cmluZ2EgKyBcIiBcIiArIHZhbHVlICsgdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcodGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gc3Vic3RyaW5nYTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gdGhpcy5zdHJpbmdhRm9ybXVsYSArIFwiIFwiICsgdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY2FyZXRQb3NpdGlvbiAhPSAwKSB7XHJcbiAgICAgICAgdmFyIHN1YnN0cmluZ2EgPSB0aGlzLnN0cmluZ2FGb3JtdWxhLnN1YnN0cmluZygwLCB0aGlzLmNhcmV0UG9zaXRpb24pO1xyXG4gICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhLnRyaW0oKTtcclxuICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYSArIFwiICogXCIgKyB2YWx1ZSArIHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHN1YnN0cmluZ2E7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEgKyBcIiAqIFwiICsgdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRMaXN0TnVtYmVyUmVhZGVyKCkge1xyXG4gICAgdGhpcy5jb3VudGVyKys7XHJcbiAgICBjb25zdCB2YWx1ZSA9IFwibGV0IHZhbHVlXCIgKyB0aGlzLmNvdW50ZXIgKyBcIiA9IDA7IGxldCBlbGVuY29cIiArIHRoaXMuY291bnRlciArIFwiID0gSU5TRVJJU0NJX0lMX1RVT19FTEVOQ087IGlmIChlbGVuY29cIiArIHRoaXMuY291bnRlciArIFwiICE9IG51bGwgJiYgZWxlbmNvXCIgKyB0aGlzLmNvdW50ZXIgKyBcIi5jb25zdHJ1Y3RvciA9PSBBcnJheSl7IGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbmNvXCIgKyB0aGlzLmNvdW50ZXIgKyBcIi5sZW5ndGg7IGkrKykgeyB2YWx1ZVwiICsgdGhpcy5jb3VudGVyICsgXCIgKz0gZWxlbmNvXCIgKyB0aGlzLmNvdW50ZXIgKyBcIltpXTsgfSB9IGVsc2UgeyB2YWx1ZVwiICsgdGhpcy5jb3VudGVyICsgXCIgPSBlbGVuY29cIiArIHRoaXMuY291bnRlciArIFwiIH1cIjtcclxuICAgIHRoaXMuYWRkTnVtYmVyKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFkZExpc3RTdHJpbmdyUmVhZGVyKCkge1xyXG4gICAgdGhpcy5jb3VudGVyKys7XHJcbiAgICBjb25zdCB2YWx1ZSA9IFwibGV0IHZhbHVlXCIgKyB0aGlzLmNvdW50ZXIgKyBcIiA9IFxcXCJcXFwiOyBsZXQgZWxlbmNvXCIgKyB0aGlzLmNvdW50ZXIgKyBcIiA9IElOU0VSSVNDSV9JTF9UVU9fRUxFTkNPOyBpZiAoZWxlbmNvXCIgKyB0aGlzLmNvdW50ZXIgKyBcIiAhPSBudWxsICYmIGVsZW5jb1wiICsgdGhpcy5jb3VudGVyICsgXCIuY29uc3RydWN0b3IgPT0gQXJyYXkpeyBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW5jb1wiICsgdGhpcy5jb3VudGVyICsgXCIubGVuZ3RoOyBpKyspIHsgdmFsdWVcIiArIHRoaXMuY291bnRlciArIFwiICs9IGVsZW5jb1wiICsgdGhpcy5jb3VudGVyICsgXCJbaV07IH0gfSBlbHNlIHsgdmFsdWVcIiArIHRoaXMuY291bnRlciArIFwiID0gZWxlbmNvXCIgKyB0aGlzLmNvdW50ZXIgKyBcIiB9XCI7XHJcbiAgICB0aGlzLmFkZE51bWJlcih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRBcnJheUxpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvdW50ZXIrKztcclxuICAgIGNvbnN0IHZhbHVlID0gXCJ2YXIgb3V0cHV0TGlzdFwiICsgdGhpcy5jb3VudGVyICsgXCIgPSB7IFxcXCJrZXlcXFwiIDogdmFsdWUgLCBcXFwia2V5MlxcXCIgOiB2YWx1ZTIgfTsgb3V0cHV0TGlzdFwiICsgdGhpcy5jb3VudGVyICsgXCI7XCI7XHJcbiAgICB0aGlzLmFkZE51bWJlcih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGROdW1iZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHJpbmdhRm9ybXVsYSA9IHRoaXMuc3RyaW5nYUZvcm11bGEudHJpbSgpO1xyXG4gICAgaWYgKFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmlzTnVtZXJpYyh2YWx1ZSkpIHtcclxuICAgICAgaWYgKHRoaXMuY2FyZXRQb3NpdGlvbiAhPSAwKSB7XHJcbiAgICAgICAgbGV0IHN1YnN0cmluZ2EgPSB0aGlzLnN0cmluZ2FGb3JtdWxhLnN1YnN0cmluZygwLCB0aGlzLmNhcmV0UG9zaXRpb24pO1xyXG4gICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhLnRyaW0oKTtcclxuICAgICAgICBzdWJzdHJpbmdhID0gc3Vic3RyaW5nYSArIHZhbHVlICsgdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcodGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gc3Vic3RyaW5nYTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gdGhpcy5zdHJpbmdhRm9ybXVsYSArIHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FyZXRQb3NpdGlvbiArPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PSBcIi5cIikge1xyXG4gICAgICAgIGlmICh0aGlzLmNhcmV0UG9zaXRpb24gIT0gMCkge1xyXG4gICAgICAgICAgbGV0IHN1YnN0cmluZ2EgPSB0aGlzLnN0cmluZ2FGb3JtdWxhLnN1YnN0cmluZygwLCB0aGlzLmNhcmV0UG9zaXRpb24pO1xyXG4gICAgICAgICAgc3Vic3RyaW5nYSA9IHN1YnN0cmluZ2EudHJpbSgpO1xyXG4gICAgICAgICAgc3Vic3RyaW5nYSA9IHN1YnN0cmluZ2EgKyB2YWx1ZSArIHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gc3Vic3RyaW5nYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gdGhpcy5zdHJpbmdhRm9ybXVsYSArIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5jYXJldFBvc2l0aW9uICE9IDApIHtcclxuICAgICAgICAgIGxldCBzdWJzdHJpbmdhID0gdGhpcy5zdHJpbmdhRm9ybXVsYS5zdWJzdHJpbmcoMCwgdGhpcy5jYXJldFBvc2l0aW9uKTtcclxuICAgICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhLnRyaW0oKTtcclxuICAgICAgICAgIHN1YnN0cmluZ2EgPSBzdWJzdHJpbmdhICsgXCIgXCIgKyB2YWx1ZSArIHRoaXMuc3RyaW5nYUZvcm11bGEuc3Vic3RyaW5nKHRoaXMuY2FyZXRQb3NpdGlvbik7XHJcbiAgICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gc3Vic3RyaW5nYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN0cmluZ2FGb3JtdWxhID0gdGhpcy5zdHJpbmdhRm9ybXVsYSArIFwiIFwiICsgdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FyZXRQb3NpdGlvbiArPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMuc3RyaW5nYUZvcm11bGEgPSB0aGlzLnN0cmluZ2FGb3JtdWxhLnRyaW0oKTtcclxuICAgIGlmIChVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXModGhpcy5zdHJpbmdhRm9ybXVsYSkpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Zvcm11bGEnKTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBmb3JtdWxhOiB0aGlzLnN0cmluZ2FGb3JtdWxhIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nRGF0YUV4YW1wbGVEaWFsb2csIHtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ19oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJUZXh0XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdlbmRfaGFuZGxlcihldmVudDogYW55KSB7XHJcbiAgICBldmVudC50YXJnZXQucHJldmlldy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldC5wcmV2aWV3KTtcclxuICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJUZXh0XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdlbnRlcl9oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lID09IFwiZHJvcHRhcmdldFwiKSB7XHJcbiAgICAgIGV2ZW50LnRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcImxpZ2h0Ymx1ZVwiO1xyXG4gICAgICBldmVudC50YXJnZXQuc3R5bGUuYm9yZGVyID0gXCIzcHggZG90dGVkIHJlZFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdsZWF2ZV9oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZCA9IFwid2hpdGVcIjtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lID09IFwiZHJvcHRhcmdldFwiKSB7XHJcbiAgICAgIGV2ZW50LnRhcmdldC5zdHlsZS5ib3JkZXIgPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyYWdzdGFydF9oYW5kbGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHByZXZpZXcgPSBldmVudC50YXJnZXQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgZXZlbnQudGFyZ2V0LnByZXZpZXcgPSBwcmV2aWV3O1xyXG4gICAgcHJldmlldy5jbGFzc05hbWUgPSAncHJldmlldyc7XHJcbiAgICBwcmV2aWV3LnN0eWxlLmNzc1RleHQgPSBgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0xMDAlOyBsZWZ0OiAtMTAwJTsgd2lkdGg6ICR7ZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRofXB4OyBgO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcmV2aWV3KTtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UocHJldmlldywgMCwgMCk7XHJcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dC9wbGFpbicsIFwicmVjLlwiICsgZXZlbnQudGFyZ2V0LmRhdGFzZXQuZHJhZ0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyb3BfaGFuZGxlcihldmVudDogYW55KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdmFyIGRhdGEgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcIlRleHRcIik7XHJcbiAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLmJhY2tncm91bmQgPSBcIndoaXRlXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJhZ292ZXJfaGFuZGxlcihldmVudDogYW55KSB7XHJcbiAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLmJhY2tncm91bmQgPSBcImxpZ2h0eWVsbG93XCI7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGlhbG9nLWRhdGEtZXhhbXBsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICdkaWFsb2ctZGF0YS1leGFtcGxlLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nRGF0YUV4YW1wbGVEaWFsb2cge1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB0LTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgbmFtZT1cImZvcm11bGFcIlxyXG4gICAgICAgICAgICAgICNmb3JtdWxhXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRhcmVhXCJcclxuICAgICAgICAgICAgICBpZD1cImZvcm11bGFcIlxyXG4gICAgICAgICAgICAgIHJvd3M9XCIxMFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wdGFyZ2V0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibG9zdEZvY3VzKGZvcm11bGEpXCJcclxuICAgICAgICAgICAgICAoa2V5dXApPVwibG9zdEZvY3VzKGZvcm11bGEpXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJsb3N0Rm9jdXMoZm9ybXVsYSlcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RyaW5nYUZvcm11bGFcIlxyXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTEgZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBtZXRob2Q9XCJQT1NUXCIgY2xhc3M9XCJhbGVydCBhbGVydC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRMaXN0U3RyaW5nclJlYWRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBMZWdnaSBFbGVuY28gVHh0XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTGlzdE51bWJlclJlYWRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBMZWdnaSBFbGVuY28gTnVtXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQXJyYXlMaXN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIEFycmF5TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGROdW1iZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lmKCBDb25kaXppb25lICkgeyBzZSB2ZXJhIH0gZWxzZSB7IHNlIGZhbHNhIH0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgSUZcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJy8xMDAnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgJVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBDXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXhsIGJ0bi1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJy8nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgJmRpdmlkZTtcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLnBvdyggdmFsb3JlICwyKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB4PHN1cD4yPC9zdXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLnBvdyggdmFsb3JlICwzKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB4PHN1cD4zPC9zdXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLnBvdyggdmFsb3JlICwgcG90ZW56YSApJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHg8c3VwPnk8L3N1cD5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJyAqIDMuMTQgJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICYjeDIxM0M7XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignNycpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA3XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignOCcpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA4XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignOScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA5XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXhsIGJ0bi1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJyonKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgJnRpbWVzO1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRTeW1ib2woJ01hdGguc3FydCggdmFsb3JlICknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN1cD4yPC9zdXA+JnJhZGljO3hcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRTeW1ib2woJ01hdGgucG93KCByYWRpY2UgLCAxLyB2YWxvcmUgKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3VwPnk8L3N1cD4mcmFkaWM7eFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC5sb2coIHZhbG9yZSApJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIGxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLmxvZzEwKCB2YWxvcmUgKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignNCcpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA0XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignNScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA1XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignNicpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA2XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXhsIGJ0bi1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJy0nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgJm1pbnVzO1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRTeW1ib2woJ01hdGguc2luKCB2YWxvcmUgKScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkU3ltYm9sKCdNYXRoLmNvcyggdmFsb3JlICknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN5bWJvbCgnTWF0aC50YW4oIHZhbG9yZSApJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHRhblxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROdW1iZXIoJyogMi43MTgyODE4Mjg0NTkwNDUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcxJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCcyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDJcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTnVtYmVyKCczJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDNcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYnRuIGJ0bi1zbSBidG4teGwgYnRuLWluZm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignKycpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAmIzQzO1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1sdC1mbGV4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignMCcpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAwXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE51bWJlcignLicpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtbHQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGJ0biBidG4tc20gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJhY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWx0LWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIFNhbHZhXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0zIHAtMiBvdmVyZmxvdy1hdXRvXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiA4MHZoO1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2hpZGRlbl09XCJmaWVsZE51bGxcIlxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcclxuICAgICAgICBjbGFzcz1cImV4YW1wbGUtbGlzdFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtYm94XCJcclxuICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIlxyXG4gICAgICAgICAgKGRyYWcpPVwiZHJhZ19oYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgKGRyYWdlbmQpPVwiZHJhZ2VuZF9oYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCJkcmFnZW50ZXJfaGFuZGxlcigkZXZlbnQpXCJcclxuICAgICAgICAgIChkcmFnbGVhdmUpPVwiZHJhZ2xlYXZlX2hhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZHJhZ292ZXIpPVwiZHJhZ292ZXJfaGFuZGxlcigkZXZlbnQpXCJcclxuICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ3N0YXJ0X2hhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZHJvcCk9XCJkcm9wX2hhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLWRyYWctZGF0YV09XCJmaWVsZC5MYWJlbFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgRmllbGRzXCJcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBmaWVsZC5MYWJlbCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+RXJyb3JlITwvaDE+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIExhIGZ1bnppb25lIGluc2VyaXRhIGNvbnRpZW5lIHBhcmVudGVzaSBub24gY2hpdXNlISBwcmltYSBkaSBzYWx2YXJlIGNvbnRyb2xsYSBsYSBmdW56aW9uZS5cclxuICBcclxuPC9kaXY+Il19
|
|
@@ -164,22 +164,22 @@ export class ListValueFieldTemplateComponent {
|
|
|
164
164
|
}
|
|
165
165
|
stringToValuePairs(valueString) {
|
|
166
166
|
const valuePairs = {};
|
|
167
|
-
this.debugLog('stringToValuePair() - this.field.Formula temp', valueString)
|
|
167
|
+
// this.debugLog('stringToValuePair() - this.field.Formula temp', valueString)
|
|
168
168
|
const keyvals = valueString.split(";");
|
|
169
169
|
keyvals.forEach((x) => {
|
|
170
170
|
const parts = x.split("|");
|
|
171
|
-
this.debugLog('stringToValuePair() - parts', parts);
|
|
172
|
-
this.debugLog('stringToValuePair() - parts.lenght', parts.length);
|
|
171
|
+
// this.debugLog('stringToValuePair() - parts', parts);
|
|
172
|
+
// this.debugLog('stringToValuePair() - parts.lenght', parts.length);
|
|
173
173
|
if (parts.length == 1) {
|
|
174
174
|
valuePairs[parts[0].trim()] = parts[0].trim();
|
|
175
175
|
}
|
|
176
176
|
else if (parts.length > 1) {
|
|
177
|
-
this.debugLog('stringToValuePair() - parts[0].trim()', parts[0].trim());
|
|
178
|
-
this.debugLog('stringToValuePair() - parts[1].trim()', parts[1].trim());
|
|
177
|
+
// this.debugLog('stringToValuePair() - parts[0].trim()', parts[0].trim());
|
|
178
|
+
// this.debugLog('stringToValuePair() - parts[1].trim()', parts[1].trim());
|
|
179
179
|
valuePairs[parts[0].trim()] = parts[1].trim();
|
|
180
180
|
}
|
|
181
181
|
});
|
|
182
|
-
this.debugLog('stringToValuePair() - valuePairs', valuePairs)
|
|
182
|
+
// this.debugLog('stringToValuePair() - valuePairs', valuePairs)
|
|
183
183
|
return valuePairs;
|
|
184
184
|
}
|
|
185
185
|
}
|
|
@@ -197,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
197
197
|
}], recordChange: [{
|
|
198
198
|
type: Output
|
|
199
199
|
}] } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUvbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUvbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLG9CQUFvQixFQUFrQixNQUFNLGdEQUFnRCxDQUFDO0FBRXRHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7QUFPbkYsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxRQUFRLENBQUMsT0FBZSxFQUFFLE9BQWE7UUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQzlCO0lBQ0gsQ0FBQztJQVVEO1FBZlMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVMxQixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFFLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLGNBQVMsR0FBdUUsRUFBRSxDQUFDO0lBSW5FLENBQUM7SUFF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SUFBSSxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMvQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUM3RCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs0SEEvTFUsK0JBQStCO2dIQUEvQiwrQkFBK0IsdU1DWDVDLHNoR0E0Q007MkZEakNPLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSwyQkFBMkI7MEVBTTVCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBMaXN0UHJlc2VudGF0aW9uRW51bSwgTGlzdFZhbHVlRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgSUJhc2VGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaUJhc2VGaWVsZENvbXBvbmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaXN0LXZhbHVlLWZpZWxkLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0VmFsdWVGaWVsZFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIElCYXNlRmllbGRDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBkZWJ1Z01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkZWJ1Z0xvZyhtZXNzYWdlOiBzdHJpbmcsIGVsZW1lbnQ/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBlbGVtZW50KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZmllbGQ6IExpc3RWYWx1ZUZpZWxkO1xyXG4gIEBJbnB1dCgpIHJlY29yZDogUmVjb3JkO1xyXG4gIEBPdXRwdXQoKSByZWNvcmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgTGlzdFByZXNlbnRhdGlvbkVudW0gPSBMaXN0UHJlc2VudGF0aW9uRW51bTtcclxuICBhcnJheURhdGE6IHsgS2V5OiBzdHJpbmcsIFZhbHVlOiBhbnksIFNlbGVjdGVkPzogYm9vbGVhbiwgSW1nVXJsPzogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIC8vdmFyaWFiaWxpIHBlciBnZXN0aXJlIGlsIGNzcyBkZWxsYSBsYWJlbCBlIGRlbCBmaWVsZFxyXG4gIEZpZWxkc3R5bGVPYmo6IGFueTtcclxuICBMYWJlbHN0eWxlT2JqOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgaW5pdFN0eWxlcygpIHtcclxuICAgIC8vRnVuemlvbmUgcGVyIHBhcnNhcmUgaWwgY2FtcG8gc3R5bGVjc3MgZGVsbCdvZ2dldHRvIGZpZWxkIGVkIGFwcGxpY2FybG8gYWxsJ2h0bWxcclxuICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aGlzLkZpZWxkc3R5bGVPYmogPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyk7XHJcbiAgICBpZiAodGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTICE9IG51bGwgfHwgdGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTICE9IHVuZGVmaW5lZClcclxuICAgICAgdGhpcy5MYWJlbHN0eWxlT2JqID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuaW5pdFN0eWxlcyh0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVidWdMb2coXCJjb21ib2JveCBkZWJ1Z01vZGVcIiwgdGhpcy5kZWJ1Z01vZGUpO1xyXG4gICAgdGhpcy5kZWJ1Z0xvZyhcImNvbWJvYm94IGZpbGVkXCIsIHRoaXMuZmllbGQpO1xyXG4gICAgdGhpcy51cGRhdGVGaWVsZCgpO1xyXG4gICAgdGhpcy5zZXRBcnJheURhdGEoKTtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmICF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBbXTtcclxuICAgIH1cclxuICAgIC8vIE5lbCBjYXNvIGluIGN1aSBzb25vIGluIG1vZGlmaWNhIGRpIHVuIFJlY29yZCBhZ2dpb3JubyBpbCB2YWxvcmVcclxuICAgIC8vIGUgaWwgdmFsaWRhdG9yIGRlbCBGb3JtQ29udHJvbC4gU2Ugbm9uIHZpZW5lIGVzZWd1aXRhIHF1ZXN0YSByaWdhXHJcbiAgICAvLyBsJ3V0ZW50ZSBkZXZlIG1vZGlmaWNhcmUgbGEgc2VsZXppb25lIGZhdHRhIHBlciBhZ2dpb3JuYXJlIGxhIGZvcm0uXHJcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcclxuICAgIHRoaXMuaW5pdFN0eWxlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgLy8gU2UgdmllbmUgbW9kaWZpY2F0byBpbCB2YWxvcmUgZGkgXCJuZ01vZGVsSW5wdXRcIiBhbGxvcmEgYWdnaW9ybmEgbCdpbnB1dFxyXG4gICAgaWYgKGNoYW5nZXNbJ3JlY29yZCddICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydyZWNvcmQnXS5maXJzdENoYW5nZSA9PSBmYWxzZSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydyZWNvcmQnXS5jdXJyZW50VmFsdWUpICE9IEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3JlY29yZCddLnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkID0gY2hhbmdlc1sncmVjb3JkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBxdWFuZG8gcXVlc3RvIMOoIHJhcHByZXNlbnRhdG8gZGEgdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgdXBkYXRlRmllbGQoKSB7XHJcbiAgICAvLyBkZXZvIGNvbnRyb2xsYXJlIHNlIGhvIGxhIHN0cmluZ2EgKFZhbHVlU3RyaW5nKSBvIGlsIGRpemlvbmFyaW8gKFZhbHVlUGFpcnMpXHJcbiAgICB0aGlzLmRlYnVnTG9nKFwibGlzdC12YWx1ZS1maWVsZCB1cGRhdGVGaWVsZFwiLCB0aGlzLmZpZWxkKVxyXG4gICAgaWYgKHRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLmRlYnVnTG9nKFwibGlzdC12YWx1ZS1maWVsZCAtIHVwZGF0ZUZpZWxkIC0gRm9ybXVsYVwiKVxyXG4gICAgICB0aGlzLmZpZWxkLlZhbHVlUGFpcnMgPSB7fTtcclxuICAgICAgY29uc3QgdGVtcDogc3RyaW5nID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEodGhpcy5maWVsZC5Gb3JtdWxhLCB0aGlzLnJlY29yZCwgbnVsbCk7XHJcbiAgICAgIC8vIHRlbXAgZG92cmViYmUgZXNzZXJlIHVuYSBzdHJpbmdhIGRlbCB0aXBvIFwiY2hpYXZlMSEgdmFsb3JlIDEgOyBjaGlhdmUyIHwgdmFsb3JlIDIgXCJcclxuICAgICAgLy8gZG9iYmlhbW8gb3R0ZW5lcmUgdW4gZGl6aW9uYXJpbyBkaSBxdWVpIHZhbG9yaVxyXG4gICAgICB0aGlzLmZpZWxkLlZhbHVlUGFpcnMgPSB0aGlzLnN0cmluZ1RvVmFsdWVQYWlycyh0ZW1wKTtcclxuXHJcbiAgICAgIC8vIGZvciAodmFyIGtleSBpbiBtYXRjaGVzKSB7XHJcbiAgICAgIC8vICAgaWYoVXRpbGl0eUhlbHBlclNlcnZpY2UuaXNOdW1lcmljKHRlbXBba2V5XSkpe1xyXG4gICAgICAvLyAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tleV0gPSBOdW1iZXIodGVtcFtrZXldKTtcclxuICAgICAgLy8gICB9ZWxzZXtcclxuICAgICAgLy8gICAgIHRoaXMuZmllbGQuVmFsdWVQYWlyc1trZXldID0gdGVtcFtrZXldO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8gICB0aGlzLnNldEFycmF5RGF0YSgpO1xyXG4gICAgICAvL3RoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVBhaXJzICE9IG51bGwgJiYgdGhpcy5maWVsZC5WYWx1ZVBhaXJzLmxlbmdodCA+IDApIHtcclxuICAgICAgdGhpcy5kZWJ1Z0xvZyhcImxpc3QtdmFsdWUtZmllbGQgLSB1cGRhdGVGaWVsZCAtIFZhbHVlUGFpcnNcIilcclxuXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGQuVmFsdWVTdHJpbmcgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLlZhbHVlU3RyaW5nICE9IFwiXCIpIHtcclxuICAgICAgdGhpcy5kZWJ1Z0xvZyhcImxpc3QtdmFsdWUtZmllbGQgLSB1cGRhdGVGaWVsZCAtIFZhbHVlU3RyaW5nXCIpXHJcbiAgICAgIHRoaXMuZmllbGQuVmFsdWVQYWlycyA9IHRoaXMuc3RyaW5nVG9WYWx1ZVBhaXJzKHRoaXMuZmllbGQuVmFsdWVTdHJpbmcpO1xyXG5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkLlZpc2libGVJZikge1xyXG4gICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLlZpc2libGVJZiwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIHF1YW5kbyB2aWVuZSBzZWxlemlvbmF0YSB1bidvcHppb25lIG5lbGxhIHZpc3VhbGl6emF6aW9uZSBhIGJ1dHRvblxyXG4gICAqIEBwYXJhbSBkYXRhIFJhcHByZXNlbnRhIGwnb2dnZXR0byBzZWxlemlvbmF0b1xyXG4gICAqL1xyXG4gIGJ1dHRvblNlbGVjdENsaWNrKGRhdGE6IHsgS2V5OiBzdHJpbmcsIFZhbHVlOiBzdHJpbmcsIFNlbGVjdGVkPzogYm9vbGVhbiwgSW1nVXJsPzogc3RyaW5nIH0pIHtcclxuICAgIGRhdGEuU2VsZWN0ZWQgPSAhZGF0YS5TZWxlY3RlZDtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcnJheURhdGEuZmlsdGVyKGQgPT4gZC5LZXkgIT0gZGF0YS5LZXkgJiYgZC5WYWx1ZSAhPSBkYXRhLlZhbHVlKS5mb3JFYWNoKGQgPT4gZC5TZWxlY3RlZCA9IGZhbHNlKTtcclxuXHJcbiAgICAgIGlmIChVdGlsaXR5SGVscGVyU2VydmljZS5pc051bWVyaWMoZGF0YS5WYWx1ZSkpIHtcclxuXHJcbiAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IE51bWJlcihkYXRhLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gZGF0YS5WYWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHRoaXMub25SZWNvcmRWYWx1ZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhZ2dpb3JuYXJlIGlsL2kgdmFsb3JlL2kgc2VsZXppb25hdG8vaSBkYWxsJ3V0ZW50ZS5cclxuICAgKiBAcGFyYW0gZW1pdENoYW5nZSBTZSB0cnVlIHNjYXRlbmEgbCdldmVudG8gZGkgb3V0cHV0IGRlbGxhIG1vZGlmaWNhIGRlbCB2YWxvcmUgZGkgcmVjb3JkXHJcbiAgICovXHJcbiAgdXBkYXRlU2VsZWN0ZWQoZW1pdENoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSB0aGlzLmFycmF5RGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLlNlbGVjdGVkKS5tYXAoZGF0YSA9PiBkYXRhLlZhbHVlKTtcclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xyXG4gICAgaWYgKGVtaXRDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblJlY29yZFZhbHVlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGVtZXR0ZXJlIGwnZXZlbnRvIGNoZSBpbCB2YWxvcmUgZGVsIHJlY29yZCDDqCBjYW1iaWF0by5cclxuICAgKi9cclxuICBvblJlY29yZFZhbHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNyZWFyZSB1biBhcnJheSBkaSBvZ2dldHRpIGRlbCB0aXBvIHsgS2V5OiBzdHJpbmcsIFZhbHVlOiBhbnkgfSBkYSB1c2FyZSBjb21lIHNvcmdlbnRlIGRhdGkgcGVyIGxhIGVxcC1zZWxlY3QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRBcnJheURhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5QcmVzZW50YXRpb25Nb2RlICE9IExpc3RQcmVzZW50YXRpb25FbnVtLkltbWFnaW5pKSB7XHJcbiAgICAgIGlmIChVdGlsaXR5SGVscGVyU2VydmljZS5pc051bWVyaWModGhpcy5maWVsZC5WYWx1ZVBhaXJzW09iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycylbMF1dKSkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGQuVmFsdWVQYWlycykuZm9yRWFjaFxyXG4gICAgICAgICAgKGsgPT4gdGhpcy5jcmVhdGVOdW1iZXJBcnJheURhdGFFbGVtZW50KGssIE51bWJlcih0aGlzLmZpZWxkLlZhbHVlUGFpcnNba10pKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5maWVsZC5WYWx1ZVBhaXJzKS5mb3JFYWNoXHJcbiAgICAgICAgICAoayA9PiB0aGlzLmNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoaywgdGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tdKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkLkJ1dHRvbkltYWdlTGlzdC5mb3JFYWNoKGkgPT4geyB0aGlzLmNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoaS5CdXR0b25LZXksIGkuQnV0dG9uVmFsdWUsICdkYXRhOicgKyBpLkZpbGVDb250ZW50VHlwZSArICc7YmFzZTY0LCcgKyBpLkZpbGVEYXRhQmFzZTY0KTsgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU51bWJlckFycmF5RGF0YUVsZW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGltZ1VybDogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgbGV0IGlzT3B0aW9uU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpc09wdGlvblNlbGVjdGVkID0gISF0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdLmZpbmQodiA9PiB2ID09IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJyYXlEYXRhLnB1c2goeyBLZXk6IGtleSwgVmFsdWU6IHZhbHVlLCBTZWxlY3RlZDogaXNPcHRpb25TZWxlY3RlZCwgSW1nVXJsOiBpbWdVcmwgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZSBpbCB2YWxpZGF0b3IgZGVsIEZvcm1Db250cm9sIGFzc29jaWF0byBhbCBjYW1wby5cclxuICAgKi9cclxuICBwcml2YXRlIHNldEZvcm1Db250cm9sVmFsdWUoKSB7XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5OYW1lXS5zZXRWYWx1ZSh0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN0cmluZ1RvVmFsdWVQYWlycyh2YWx1ZVN0cmluZzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB2YWx1ZVBhaXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgICB0aGlzLmRlYnVnTG9nKCdzdHJpbmdUb1ZhbHVlUGFpcigpIC0gdGhpcy5maWVsZC5Gb3JtdWxhIHRlbXAnLCB2YWx1ZVN0cmluZylcclxuICAgIGNvbnN0IGtleXZhbHMgPSB2YWx1ZVN0cmluZy5zcGxpdChcIjtcIik7XHJcbiAgICBrZXl2YWxzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgY29uc3QgcGFydHMgPSB4LnNwbGl0KFwifFwiKTtcclxuICAgICAgdGhpcy5kZWJ1Z0xvZygnc3RyaW5nVG9WYWx1ZVBhaXIoKSAtIHBhcnRzJywgcGFydHMpO1xyXG4gICAgICB0aGlzLmRlYnVnTG9nKCdzdHJpbmdUb1ZhbHVlUGFpcigpIC0gcGFydHMubGVuZ2h0JywgcGFydHMubGVuZ3RoKTtcclxuICAgICAgaWYocGFydHMubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIHZhbHVlUGFpcnNbcGFydHNbMF0udHJpbSgpXSA9IHBhcnRzWzBdLnRyaW0oKTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPiAxKXtcclxuICAgICAgICB0aGlzLmRlYnVnTG9nKCdzdHJpbmdUb1ZhbHVlUGFpcigpIC0gcGFydHNbMF0udHJpbSgpJywgcGFydHNbMF0udHJpbSgpKTtcclxuICAgICAgICB0aGlzLmRlYnVnTG9nKCdzdHJpbmdUb1ZhbHVlUGFpcigpIC0gcGFydHNbMV0udHJpbSgpJywgcGFydHNbMV0udHJpbSgpKTtcclxuICAgICAgICB2YWx1ZVBhaXJzW3BhcnRzWzBdLnRyaW0oKV0gPSBwYXJ0c1sxXS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmRlYnVnTG9nKCdzdHJpbmdUb1ZhbHVlUGFpcigpIC0gdmFsdWVQYWlycycsIHZhbHVlUGFpcnMpXHJcbiAgICByZXR1cm4gdmFsdWVQYWlycztcclxuICB9XHJcblxyXG59XHJcbiIsIjxlcXAtc2VsZWN0IFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiAqbmdJZj1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ0NvbWJvIGJveCddXCIgW2FycmF5RGF0YV09XCJhcnJheURhdGFcIlxyXG4gICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ1ZhbHVlJ1wiIFtzaG93Q2FuY2VsQnV0dG9uXT1cIiFmaWVsZC5SZXF1aXJlZFwiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ0tleSdcIlxyXG4gICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkLkZvcm1Gb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiZmllbGQuTmFtZVwiIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5EZXNjcmlwdGlvblwiXHJcbiAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbaXNSZXF1aXJlZF09XCJmaWVsZC5SZXF1aXJlZFwiIFtpc0Rpc2FibGVkXT1cImZpZWxkLkZvcm1Gb3JtR3JvdXAuZGlzYWJsZWRcIlxyXG4gICAgWyhuZ01vZGVsSW5wdXQpXT1cInJlY29yZFtmaWVsZC5OYW1lXVwiIFtpc011bHRpU2VsZWN0XT1cImZpZWxkLklzTXVsdGlDaG9pY2hlXCJcclxuICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25SZWNvcmRWYWx1ZUNoYW5nZSgpXCI+XHJcbjwvZXFwLXNlbGVjdD5cclxuXHJcbjxkaXYgKm5nSWY9XCJmaWVsZC5QcmVzZW50YXRpb25Nb2RlICE9IExpc3RQcmVzZW50YXRpb25FbnVtWydDb21ibyBib3gnXVwiIFtmb3JtR3JvdXBdPVwiZmllbGQuRm9ybUZvcm1Hcm91cFwiPlxyXG5cclxuICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJtci0zIHBzLTNcIiBbbmdTdHlsZV09XCJMYWJlbHN0eWxlT2JqXCI+IHt7ZmllbGQuRGVzY3JpcHRpb24gKyAoZmllbGQuUmVxdWlyZWQgPyBcIiAqXCIgOiBcIlwiKX19IDwvbWF0LWxhYmVsPlxyXG4gICAgPCEtLSBWSVNVQUxJWlpBWklPTkUgQSBSQURJTyBCVVRUT04gKFNFTlpBIFNFTEVaSU9ORSBNVUxUSVBMQSkgLS0+XHJcbiAgICA8bWF0LXJhZGlvLWdyb3VwIFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiAqbmdJZj1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1JhZGlvIGJ1dHRvbiddICYmICFmaWVsZC5Jc011bHRpQ2hvaWNoZVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5OYW1lXCIgW2Rpc2FibGVkXT1cImZpZWxkLkZvcm1Gb3JtR3JvdXAuZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwiZmllbGQuUmVxdWlyZWRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SZWNvcmRWYWx1ZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJtcy0zIGQtYmxvY2tcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhcnJheURhdGFcIiBbdmFsdWVdPVwiZGF0YS5WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuS2V5fX1cclxuICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICA8L21hdC1yYWRpby1ncm91cD5cclxuXHJcbiAgICA8IS0tIFZJU1VBTElaWkFaSU9ORSBBIENIRUNLQk9YIChTRUxFWklPTkUgTVVMVElQTEEpIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCJcclxuICAgICAgICAqbmdJZj1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1JhZGlvIGJ1dHRvbiddICYmIGZpZWxkLklzTXVsdGlDaG9pY2hlXCI+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCAgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiIGNsYXNzPVwibXItMlwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFycmF5RGF0YVwiIFtkaXNhYmxlZF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5OYW1lXCIgWyhuZ01vZGVsKV09XCJkYXRhLlNlbGVjdGVkXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuS2V5fX1cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gVklTVUFMSVpaQVpJT05FIEEgUFVMU0FOVEkgKENPTiBURVNUTyBPIElNTUFHSU5JKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiXHJcbiAgICAgICAgKm5nSWY9XCJbTGlzdFByZXNlbnRhdGlvbkVudW1bJ1B1bHNhbnRlIGNvbiB0ZXN0byddLCBMaXN0UHJlc2VudGF0aW9uRW51bS5JbW1hZ2luaV0uaW5jbHVkZXMoZmllbGQuUHJlc2VudGF0aW9uTW9kZSlcIj5cclxuICAgICAgICA8YnV0dG9uIFtuZ1N0eWxlXT1cIkZpZWxkc3R5bGVPYmpcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtLTEgZGF0YS1idXR0b25cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhcnJheURhdGFcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkLWJ1dHRvbic6IGRhdGEuU2VsZWN0ZWQgPT0gdHJ1ZSwgJ3AtMCc6IGZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW0uSW1tYWdpbml9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvblNlbGVjdENsaWNrKGRhdGEpXCIgW2Rpc2FibGVkXT1cImZpZWxkLkZvcm1Gb3JtR3JvdXAuZGlzYWJsZWRcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVEVTVE8gREVMIFBVTFNBTlRFIC0tPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1B1bHNhbnRlIGNvbiB0ZXN0byddXCI+IHt7ZGF0YS5LZXl9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gSU1NQUdJTkUgREVMIFBVTFNBTlRFIC0tPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bS5JbW1hZ2luaVwiIFtzcmNdPVwiZGF0YS5JbWdVcmxcIj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUvbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUvbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLG9CQUFvQixFQUFrQixNQUFNLGdEQUFnRCxDQUFDO0FBRXRHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7QUFPbkYsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxRQUFRLENBQUMsT0FBZSxFQUFFLE9BQWE7UUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQzlCO0lBQ0gsQ0FBQztJQVVEO1FBZlMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVMxQixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFFLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLGNBQVMsR0FBdUUsRUFBRSxDQUFDO0lBSW5FLENBQUM7SUFF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QUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsZ0VBQWdFO1FBQ2hFLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OzRIQS9MVSwrQkFBK0I7Z0hBQS9CLCtCQUErQix1TUNYNUMsc2hHQTRDTTsyRkRqQ08sK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDJCQUEyQjswRUFNNUIsU0FBUztzQkFBakIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IExpc3RQcmVzZW50YXRpb25FbnVtLCBMaXN0VmFsdWVGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbGlzdFZhbHVlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBJQmFzZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9pQmFzZUZpZWxkQ29tcG9uZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZhbHVlLWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saXN0LXZhbHVlLWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RWYWx1ZUZpZWxkVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGRlYnVnTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlYnVnTG9nKG1lc3NhZ2U6IHN0cmluZywgZWxlbWVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGVidWdNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIGVsZW1lbnQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBmaWVsZDogTGlzdFZhbHVlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBMaXN0UHJlc2VudGF0aW9uRW51bSA9IExpc3RQcmVzZW50YXRpb25FbnVtO1xyXG4gIGFycmF5RGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSwgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfVtdID0gW107XHJcbiAgLy92YXJpYWJpbGkgcGVyIGdlc3RpcmUgaWwgY3NzIGRlbGxhIGxhYmVsIGUgZGVsIGZpZWxkXHJcbiAgRmllbGRzdHlsZU9iajogYW55O1xyXG4gIExhYmVsc3R5bGVPYmo6IGFueTtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBpbml0U3R5bGVzKCkge1xyXG4gICAgLy9GdW56aW9uZSBwZXIgcGFyc2FyZSBpbCBjYW1wbyBzdHlsZWNzcyBkZWxsJ29nZ2V0dG8gZmllbGQgZWQgYXBwbGljYXJsbyBhbGwnaHRtbFxyXG4gICAgaWYgKHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSBudWxsIHx8IHRoaXMuZmllbGQuRmllbGRzdHlsZUNTUyAhPSB1bmRlZmluZWQpXHJcbiAgICAgIHRoaXMuRmllbGRzdHlsZU9iaiA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmluaXRTdHlsZXModGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTKTtcclxuICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gbnVsbCB8fCB0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MgIT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aGlzLkxhYmVsc3R5bGVPYmogPSBVdGlsaXR5SGVscGVyU2VydmljZS5pbml0U3R5bGVzKHRoaXMuZmllbGQuTGFiZWxzdHlsZUNTUyk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWJ1Z0xvZyhcImNvbWJvYm94IGRlYnVnTW9kZVwiLCB0aGlzLmRlYnVnTW9kZSk7XHJcbiAgICB0aGlzLmRlYnVnTG9nKFwiY29tYm9ib3ggZmlsZWRcIiwgdGhpcy5maWVsZCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZpZWxkKCk7XHJcbiAgICB0aGlzLnNldEFycmF5RGF0YSgpO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuSXNNdWx0aUNob2ljaGUgJiYgIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0pIHtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IFtdO1xyXG4gICAgfVxyXG4gICAgLy8gTmVsIGNhc28gaW4gY3VpIHNvbm8gaW4gbW9kaWZpY2EgZGkgdW4gUmVjb3JkIGFnZ2lvcm5vIGlsIHZhbG9yZVxyXG4gICAgLy8gZSBpbCB2YWxpZGF0b3IgZGVsIEZvcm1Db250cm9sLiBTZSBub24gdmllbmUgZXNlZ3VpdGEgcXVlc3RhIHJpZ2FcclxuICAgIC8vIGwndXRlbnRlIGRldmUgbW9kaWZpY2FyZSBsYSBzZWxlemlvbmUgZmF0dGEgcGVyIGFnZ2lvcm5hcmUgbGEgZm9ybS5cclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xyXG4gICAgdGhpcy5pbml0U3R5bGVzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBTZSB2aWVuZSBtb2RpZmljYXRvIGlsIHZhbG9yZSBkaSBcIm5nTW9kZWxJbnB1dFwiIGFsbG9yYSBhZ2dpb3JuYSBsJ2lucHV0XHJcbiAgICBpZiAoY2hhbmdlc1sncmVjb3JkJ10gIT0gdW5kZWZpbmVkICYmIGNoYW5nZXNbJ3JlY29yZCddLmZpcnN0Q2hhbmdlID09IGZhbHNlICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbJ3JlY29yZCddLmN1cnJlbnRWYWx1ZSkgIT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1sncmVjb3JkJ10ucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5yZWNvcmQgPSBjaGFuZ2VzWydyZWNvcmQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMudXBkYXRlRmllbGQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZGVsIGNhbXBvIHF1YW5kbyBxdWVzdG8gw6ggcmFwcHJlc2VudGF0byBkYSB1bmEgZm9ybXVsYS5cclxuICAgKi9cclxuICB1cGRhdGVGaWVsZCgpIHtcclxuICAgIC8vIGRldm8gY29udHJvbGxhcmUgc2UgaG8gbGEgc3RyaW5nYSAoVmFsdWVTdHJpbmcpIG8gaWwgZGl6aW9uYXJpbyAoVmFsdWVQYWlycylcclxuICAgIHRoaXMuZGVidWdMb2coXCJsaXN0LXZhbHVlLWZpZWxkIHVwZGF0ZUZpZWxkXCIsIHRoaXMuZmllbGQpXHJcbiAgICBpZiAodGhpcy5maWVsZC5Gb3JtdWxhKSB7XHJcbiAgICAgIHRoaXMuZGVidWdMb2coXCJsaXN0LXZhbHVlLWZpZWxkIC0gdXBkYXRlRmllbGQgLSBGb3JtdWxhXCIpXHJcbiAgICAgIHRoaXMuZmllbGQuVmFsdWVQYWlycyA9IHt9O1xyXG4gICAgICBjb25zdCB0ZW1wOiBzdHJpbmcgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucmVjb3JkLCBudWxsKTtcclxuICAgICAgLy8gdGVtcCBkb3ZyZWJiZSBlc3NlcmUgdW5hIHN0cmluZ2EgZGVsIHRpcG8gXCJjaGlhdmUxISB2YWxvcmUgMSA7IGNoaWF2ZTIgfCB2YWxvcmUgMiBcIlxyXG4gICAgICAvLyBkb2JiaWFtbyBvdHRlbmVyZSB1biBkaXppb25hcmlvIGRpIHF1ZWkgdmFsb3JpXHJcbiAgICAgIHRoaXMuZmllbGQuVmFsdWVQYWlycyA9IHRoaXMuc3RyaW5nVG9WYWx1ZVBhaXJzKHRlbXApO1xyXG5cclxuICAgICAgLy8gZm9yICh2YXIga2V5IGluIG1hdGNoZXMpIHtcclxuICAgICAgLy8gICBpZihVdGlsaXR5SGVscGVyU2VydmljZS5pc051bWVyaWModGVtcFtrZXldKSl7XHJcbiAgICAgIC8vICAgICB0aGlzLmZpZWxkLlZhbHVlUGFpcnNba2V5XSA9IE51bWJlcih0ZW1wW2tleV0pO1xyXG4gICAgICAvLyAgIH1lbHNle1xyXG4gICAgICAvLyAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzW2tleV0gPSB0ZW1wW2tleV07XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICAvLyAgIHRoaXMuc2V0QXJyYXlEYXRhKCk7XHJcbiAgICAgIC8vdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5yZWNvcmQsIG51bGwpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkLlZhbHVlUGFpcnMgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLlZhbHVlUGFpcnMubGVuZ2h0ID4gMCkge1xyXG4gICAgICB0aGlzLmRlYnVnTG9nKFwibGlzdC12YWx1ZS1maWVsZCAtIHVwZGF0ZUZpZWxkIC0gVmFsdWVQYWlyc1wiKVxyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5WYWx1ZVN0cmluZyAhPSBudWxsICYmIHRoaXMuZmllbGQuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICB0aGlzLmRlYnVnTG9nKFwibGlzdC12YWx1ZS1maWVsZCAtIHVwZGF0ZUZpZWxkIC0gVmFsdWVTdHJpbmdcIilcclxuICAgICAgdGhpcy5maWVsZC5WYWx1ZVBhaXJzID0gdGhpcy5zdHJpbmdUb1ZhbHVlUGFpcnModGhpcy5maWVsZC5WYWx1ZVN0cmluZyk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmllbGQuVmlzaWJsZUlmKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuSW5MaXN0VmlldyA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKHRoaXMuZmllbGQuVmlzaWJsZUlmLCB0aGlzLnJlY29yZCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gcXVhbmRvIHZpZW5lIHNlbGV6aW9uYXRhIHVuJ29wemlvbmUgbmVsbGEgdmlzdWFsaXp6YXppb25lIGEgYnV0dG9uXHJcbiAgICogQHBhcmFtIGRhdGEgUmFwcHJlc2VudGEgbCdvZ2dldHRvIHNlbGV6aW9uYXRvXHJcbiAgICovXHJcbiAgYnV0dG9uU2VsZWN0Q2xpY2soZGF0YTogeyBLZXk6IHN0cmluZywgVmFsdWU6IHN0cmluZywgU2VsZWN0ZWQ/OiBib29sZWFuLCBJbWdVcmw/OiBzdHJpbmcgfSkge1xyXG4gICAgZGF0YS5TZWxlY3RlZCA9ICFkYXRhLlNlbGVjdGVkO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuSXNNdWx0aUNob2ljaGUpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZChmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFycmF5RGF0YS5maWx0ZXIoZCA9PiBkLktleSAhPSBkYXRhLktleSAmJiBkLlZhbHVlICE9IGRhdGEuVmFsdWUpLmZvckVhY2goZCA9PiBkLlNlbGVjdGVkID0gZmFsc2UpO1xyXG5cclxuICAgICAgaWYgKFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmlzTnVtZXJpYyhkYXRhLlZhbHVlKSkge1xyXG5cclxuICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gTnVtYmVyKGRhdGEuVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBkYXRhLlZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5vblJlY29yZFZhbHVlQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2lvcm5hcmUgaWwvaSB2YWxvcmUvaSBzZWxlemlvbmF0by9pIGRhbGwndXRlbnRlLlxyXG4gICAqIEBwYXJhbSBlbWl0Q2hhbmdlIFNlIHRydWUgc2NhdGVuYSBsJ2V2ZW50byBkaSBvdXRwdXQgZGVsbGEgbW9kaWZpY2EgZGVsIHZhbG9yZSBkaSByZWNvcmRcclxuICAgKi9cclxuICB1cGRhdGVTZWxlY3RlZChlbWl0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuYXJyYXlEYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuU2VsZWN0ZWQpLm1hcChkYXRhID0+IGRhdGEuVmFsdWUpO1xyXG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XHJcbiAgICBpZiAoZW1pdENoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uUmVjb3JkVmFsdWVDaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZW1ldHRlcmUgbCdldmVudG8gY2hlIGlsIHZhbG9yZSBkZWwgcmVjb3JkIMOoIGNhbWJpYXRvLlxyXG4gICAqL1xyXG4gIG9uUmVjb3JkVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBLZXk6IHN0cmluZywgVmFsdWU6IGFueSB9IGRhIHVzYXJlIGNvbWUgc29yZ2VudGUgZGF0aSBwZXIgbGEgZXFwLXNlbGVjdC5cclxuICAgKi9cclxuICBwcml2YXRlIHNldEFycmF5RGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLlByZXNlbnRhdGlvbk1vZGUgIT0gTGlzdFByZXNlbnRhdGlvbkVudW0uSW1tYWdpbmkpIHtcclxuICAgICAgaWYgKFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmlzTnVtZXJpYyh0aGlzLmZpZWxkLlZhbHVlUGFpcnNbT2JqZWN0LmtleXModGhpcy5maWVsZC5WYWx1ZVBhaXJzKVswXV0pKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5maWVsZC5WYWx1ZVBhaXJzKS5mb3JFYWNoXHJcbiAgICAgICAgICAoayA9PiB0aGlzLmNyZWF0ZU51bWJlckFycmF5RGF0YUVsZW1lbnQoaywgTnVtYmVyKHRoaXMuZmllbGQuVmFsdWVQYWlyc1trXSkpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkLlZhbHVlUGFpcnMpLmZvckVhY2hcclxuICAgICAgICAgIChrID0+IHRoaXMuY3JlYXRlQXJyYXlEYXRhRWxlbWVudChrLCB0aGlzLmZpZWxkLlZhbHVlUGFpcnNba10pKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGQuQnV0dG9uSW1hZ2VMaXN0LmZvckVhY2goaSA9PiB7IHRoaXMuY3JlYXRlQXJyYXlEYXRhRWxlbWVudChpLkJ1dHRvbktleSwgaS5CdXR0b25WYWx1ZSwgJ2RhdGE6JyArIGkuRmlsZUNvbnRlbnRUeXBlICsgJztiYXNlNjQsJyArIGkuRmlsZURhdGFCYXNlNjQpOyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQXJyYXlEYXRhRWxlbWVudChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgaW1nVXJsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgaXNPcHRpb25TZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSAhIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZmluZCh2ID0+IHYgPT0gdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNPcHRpb25TZWxlY3RlZCA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcnJheURhdGEucHVzaCh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUsIFNlbGVjdGVkOiBpc09wdGlvblNlbGVjdGVkLCBJbWdVcmw6IGltZ1VybCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTnVtYmVyQXJyYXlEYXRhRWxlbWVudChrZXk6IHN0cmluZywgdmFsdWU6IG51bWJlciwgaW1nVXJsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBsZXQgaXNPcHRpb25TZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlICYmIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlzT3B0aW9uU2VsZWN0ZWQgPSAhIXRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0uZmluZCh2ID0+IHYgPT0gdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNPcHRpb25TZWxlY3RlZCA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcnJheURhdGEucHVzaCh7IEtleToga2V5LCBWYWx1ZTogdmFsdWUsIFNlbGVjdGVkOiBpc09wdGlvblNlbGVjdGVkLCBJbWdVcmw6IGltZ1VybCB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhZ2dpb3JuYXJlIGlsIHZhbG9yZSBlIGlsIHZhbGlkYXRvciBkZWwgRm9ybUNvbnRyb2wgYXNzb2NpYXRvIGFsIGNhbXBvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpIHtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZpZWxkLk5hbWVdLnNldFZhbHVlKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgc3RyaW5nVG9WYWx1ZVBhaXJzKHZhbHVlU3RyaW5nOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIGNvbnN0IHZhbHVlUGFpcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgIC8vIHRoaXMuZGVidWdMb2coJ3N0cmluZ1RvVmFsdWVQYWlyKCkgLSB0aGlzLmZpZWxkLkZvcm11bGEgdGVtcCcsIHZhbHVlU3RyaW5nKVxyXG4gICAgY29uc3Qga2V5dmFscyA9IHZhbHVlU3RyaW5nLnNwbGl0KFwiO1wiKTtcclxuICAgIGtleXZhbHMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJ0cyA9IHguc3BsaXQoXCJ8XCIpO1xyXG4gICAgICAvLyB0aGlzLmRlYnVnTG9nKCdzdHJpbmdUb1ZhbHVlUGFpcigpIC0gcGFydHMnLCBwYXJ0cyk7XHJcbiAgICAgIC8vIHRoaXMuZGVidWdMb2coJ3N0cmluZ1RvVmFsdWVQYWlyKCkgLSBwYXJ0cy5sZW5naHQnLCBwYXJ0cy5sZW5ndGgpO1xyXG4gICAgICBpZihwYXJ0cy5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgdmFsdWVQYWlyc1twYXJ0c1swXS50cmltKCldID0gcGFydHNbMF0udHJpbSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnRzLmxlbmd0aCA+IDEpe1xyXG4gICAgICAgIC8vIHRoaXMuZGVidWdMb2coJ3N0cmluZ1RvVmFsdWVQYWlyKCkgLSBwYXJ0c1swXS50cmltKCknLCBwYXJ0c1swXS50cmltKCkpO1xyXG4gICAgICAgIC8vIHRoaXMuZGVidWdMb2coJ3N0cmluZ1RvVmFsdWVQYWlyKCkgLSBwYXJ0c1sxXS50cmltKCknLCBwYXJ0c1sxXS50cmltKCkpO1xyXG4gICAgICAgIHZhbHVlUGFpcnNbcGFydHNbMF0udHJpbSgpXSA9IHBhcnRzWzFdLnRyaW0oKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIC8vIHRoaXMuZGVidWdMb2coJ3N0cmluZ1RvVmFsdWVQYWlyKCkgLSB2YWx1ZVBhaXJzJywgdmFsdWVQYWlycylcclxuICAgIHJldHVybiB2YWx1ZVBhaXJzO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGVxcC1zZWxlY3QgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiICpuZ0lmPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnQ29tYm8gYm94J11cIiBbYXJyYXlEYXRhXT1cImFycmF5RGF0YVwiXHJcbiAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInVmFsdWUnXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiIWZpZWxkLlJlcXVpcmVkXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInS2V5J1wiXHJcbiAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGQuRm9ybUZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCJmaWVsZC5OYW1lXCIgW3BsYWNlaG9sZGVyXT1cImZpZWxkLkRlc2NyaXB0aW9uXCJcclxuICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtpc1JlcXVpcmVkXT1cImZpZWxkLlJlcXVpcmVkXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQuRm9ybUZvcm1Hcm91cC5kaXNhYmxlZFwiXHJcbiAgICBbKG5nTW9kZWxJbnB1dCldPVwicmVjb3JkW2ZpZWxkLk5hbWVdXCIgW2lzTXVsdGlTZWxlY3RdPVwiZmllbGQuSXNNdWx0aUNob2ljaGVcIlxyXG4gICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvblJlY29yZFZhbHVlQ2hhbmdlKClcIj5cclxuPC9lcXAtc2VsZWN0PlxyXG5cclxuPGRpdiAqbmdJZj1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgIT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ0NvbWJvIGJveCddXCIgW2Zvcm1Hcm91cF09XCJmaWVsZC5Gb3JtRm9ybUdyb3VwXCI+XHJcblxyXG4gICAgPG1hdC1sYWJlbCBjbGFzcz1cIm1yLTMgcHMtM1wiIFtuZ1N0eWxlXT1cIkxhYmVsc3R5bGVPYmpcIj4ge3tmaWVsZC5EZXNjcmlwdGlvbiArIChmaWVsZC5SZXF1aXJlZCA/IFwiICpcIiA6IFwiXCIpfX0gPC9tYXQtbGFiZWw+XHJcbiAgICA8IS0tIFZJU1VBTElaWkFaSU9ORSBBIFJBRElPIEJVVFRPTiAoU0VOWkEgU0VMRVpJT05FIE1VTFRJUExBKSAtLT5cclxuICAgIDxtYXQtcmFkaW8tZ3JvdXAgW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiICpuZ0lmPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUmFkaW8gYnV0dG9uJ10gJiYgIWZpZWxkLklzTXVsdGlDaG9pY2hlXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLk5hbWVcIiBbZGlzYWJsZWRdPVwiZmllbGQuRm9ybUZvcm1Hcm91cC5kaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJmaWVsZC5SZXF1aXJlZFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyZWNvcmRbZmllbGQuTmFtZV1cIiAobmdNb2RlbENoYW5nZSk9XCJvblJlY29yZFZhbHVlQ2hhbmdlKClcIj5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cIm1zLTMgZC1ibG9ja1wiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFycmF5RGF0YVwiIFt2YWx1ZV09XCJkYXRhLlZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YS5LZXl9fVxyXG4gICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG5cclxuICAgIDwhLS0gVklTVUFMSVpaQVpJT05FIEEgQ0hFQ0tCT1ggKFNFTEVaSU9ORSBNVUxUSVBMQSkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIlxyXG4gICAgICAgICpuZ0lmPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUmFkaW8gYnV0dG9uJ10gJiYgZmllbGQuSXNNdWx0aUNob2ljaGVcIj5cclxuICAgICAgICA8bWF0LWNoZWNrYm94ICBbbmdTdHlsZV09XCJGaWVsZHN0eWxlT2JqXCIgY2xhc3M9XCJtci0yXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYXJyYXlEYXRhXCIgW2Rpc2FibGVkXT1cImZpZWxkLkZvcm1Gb3JtR3JvdXAuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLk5hbWVcIiBbKG5nTW9kZWwpXT1cImRhdGEuU2VsZWN0ZWRcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZCgpXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YS5LZXl9fVxyXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBWSVNVQUxJWlpBWklPTkUgQSBQVUxTQU5USSAoQ09OIFRFU1RPIE8gSU1NQUdJTkkpIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCJcclxuICAgICAgICAqbmdJZj1cIltMaXN0UHJlc2VudGF0aW9uRW51bVsnUHVsc2FudGUgY29uIHRlc3RvJ10sIExpc3RQcmVzZW50YXRpb25FbnVtLkltbWFnaW5pXS5pbmNsdWRlcyhmaWVsZC5QcmVzZW50YXRpb25Nb2RlKVwiPlxyXG4gICAgICAgIDxidXR0b24gW25nU3R5bGVdPVwiRmllbGRzdHlsZU9ialwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG0tMSBkYXRhLWJ1dHRvblwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFycmF5RGF0YVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQtYnV0dG9uJzogZGF0YS5TZWxlY3RlZCA9PSB0cnVlLCAncC0wJzogZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bS5JbW1hZ2luaX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uU2VsZWN0Q2xpY2soZGF0YSlcIiBbZGlzYWJsZWRdPVwiZmllbGQuRm9ybUZvcm1Hcm91cC5kaXNhYmxlZFwiPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBURVNUTyBERUwgUFVMU0FOVEUgLS0+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUHVsc2FudGUgY29uIHRlc3RvJ11cIj4ge3tkYXRhLktleX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBJTU1BR0lORSBERUwgUFVMU0FOVEUgLS0+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmaWVsZC5QcmVzZW50YXRpb25Nb2RlID09IExpc3RQcmVzZW50YXRpb25FbnVtLkltbWFnaW5pXCIgW3NyY109XCJkYXRhLkltZ1VybFwiPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
|