@openmrs/ngx-formentry 3.0.1-pre.153 → 3.0.1-pre.156
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/bundles/openmrs-ngx-formentry.umd.js +103 -19
- package/bundles/openmrs-ngx-formentry.umd.js.map +1 -1
- package/components/number-input/number-input.component.d.ts +9 -1
- package/esm2015/components/number-input/number-input.component.js +15 -3
- package/esm2015/form-entry/form-factory/question.factory.js +15 -1
- package/esm2015/form-entry/form-factory/validation.factory.js +13 -6
- package/esm2015/form-entry/form-renderer/form-renderer.component.js +2 -2
- package/esm2015/form-entry/question-models/max-length-validation.model.js +9 -0
- package/esm2015/form-entry/question-models/max-validation.model.js +2 -2
- package/esm2015/form-entry/question-models/min-length-validation.model.js +9 -0
- package/esm2015/form-entry/question-models/min-validation.model.js +2 -2
- package/esm2015/form-entry/validators/max-length.validator.js +17 -0
- package/esm2015/form-entry/validators/min-length.validator.js +17 -0
- package/fesm2015/openmrs-ngx-formentry.js +90 -10
- package/fesm2015/openmrs-ngx-formentry.js.map +1 -1
- package/form-entry/form-factory/validation.factory.d.ts +6 -3
- package/form-entry/question-models/max-length-validation.model.d.ts +5 -0
- package/form-entry/question-models/min-length-validation.model.d.ts +5 -0
- package/form-entry/validators/max-length.validator.d.ts +6 -0
- package/form-entry/validators/min-length.validator.d.ts +6 -0
- package/package.json +1 -1
|
@@ -60,6 +60,14 @@ export declare class NumberInputComponent implements ControlValueAccessor {
|
|
|
60
60
|
* Sets the max attribute on the `input` element.
|
|
61
61
|
*/
|
|
62
62
|
max: any;
|
|
63
|
+
/**
|
|
64
|
+
* Sets the max length attribute on the `input` element.
|
|
65
|
+
*/
|
|
66
|
+
maxlength: any;
|
|
67
|
+
/**
|
|
68
|
+
* Sets the min length attribute on the `input` element.
|
|
69
|
+
*/
|
|
70
|
+
minlength: any;
|
|
63
71
|
/**
|
|
64
72
|
* Sets the text inside the `label` tag.
|
|
65
73
|
*/
|
|
@@ -147,5 +155,5 @@ export declare class NumberInputComponent implements ControlValueAccessor {
|
|
|
147
155
|
onNumberInputChange(event: any): void;
|
|
148
156
|
isTemplate(value: any): boolean;
|
|
149
157
|
static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputComponent, never>;
|
|
150
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NumberInputComponent, "ofe-number-input", never, { "theme": "theme"; "disabled": "disabled"; "skeleton": "skeleton"; "invalid": "invalid"; "id": "id"; "size": "size"; "required": "required"; "value": "value"; "min": "min"; "max": "max"; "label": "label"; "helperText": "helperText"; "invalidText": "invalidText"; "step": "step"; "precision": "precision"; "warn": "warn"; "warnText": "warnText"; "decrementLabel": "decrementLabel"; "incrementLabel": "incrementLabel"; }, { "numberChange": "numberChange"; }, never, never>;
|
|
158
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NumberInputComponent, "ofe-number-input", never, { "theme": "theme"; "disabled": "disabled"; "skeleton": "skeleton"; "invalid": "invalid"; "id": "id"; "size": "size"; "required": "required"; "value": "value"; "min": "min"; "max": "max"; "maxlength": "maxlength"; "minlength": "minlength"; "label": "label"; "helperText": "helperText"; "invalidText": "invalidText"; "step": "step"; "precision": "precision"; "warn": "warn"; "warnText": "warnText"; "decrementLabel": "decrementLabel"; "incrementLabel": "incrementLabel"; }, { "numberChange": "numberChange"; }, never, never>;
|
|
151
159
|
}
|
|
@@ -45,6 +45,14 @@ export class NumberInputComponent {
|
|
|
45
45
|
* Sets the max attribute on the `input` element.
|
|
46
46
|
*/
|
|
47
47
|
this.max = null;
|
|
48
|
+
/**
|
|
49
|
+
* Sets the max length attribute on the `input` element.
|
|
50
|
+
*/
|
|
51
|
+
this.maxlength = null;
|
|
52
|
+
/**
|
|
53
|
+
* Sets the min length attribute on the `input` element.
|
|
54
|
+
*/
|
|
55
|
+
this.minlength = null;
|
|
48
56
|
/**
|
|
49
57
|
* Sets the amount the number controls increment and decrement by.
|
|
50
58
|
*/
|
|
@@ -167,13 +175,13 @@ export class NumberInputComponent {
|
|
|
167
175
|
*/
|
|
168
176
|
NumberInputComponent.numberCount = 0;
|
|
169
177
|
NumberInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
170
|
-
NumberInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NumberInputComponent, selector: "ofe-number-input", inputs: { theme: "theme", disabled: "disabled", skeleton: "skeleton", invalid: "invalid", id: "id", size: "size", required: "required", value: "value", min: "min", max: "max", label: "label", helperText: "helperText", invalidText: "invalidText", step: "step", precision: "precision", warn: "warn", warnText: "warnText", decrementLabel: "decrementLabel", incrementLabel: "incrementLabel" }, outputs: { numberChange: "numberChange" }, host: { listeners: { "focusout": "focusOut()" } }, providers: [
|
|
178
|
+
NumberInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NumberInputComponent, selector: "ofe-number-input", inputs: { theme: "theme", disabled: "disabled", skeleton: "skeleton", invalid: "invalid", id: "id", size: "size", required: "required", value: "value", min: "min", max: "max", maxlength: "maxlength", minlength: "minlength", label: "label", helperText: "helperText", invalidText: "invalidText", step: "step", precision: "precision", warn: "warn", warnText: "warnText", decrementLabel: "decrementLabel", incrementLabel: "incrementLabel" }, outputs: { numberChange: "numberChange" }, host: { listeners: { "focusout": "focusOut()" } }, providers: [
|
|
171
179
|
{
|
|
172
180
|
provide: NG_VALUE_ACCESSOR,
|
|
173
181
|
useExisting: forwardRef(() => NumberInputComponent),
|
|
174
182
|
multi: true
|
|
175
183
|
}
|
|
176
|
-
], ngImport: i0, template: "<div\n data-numberinput\n [attr.data-invalid]=\"invalid ? true : null\"\n class=\"cds--number\"\n [ngClass]=\"{\n 'cds--number--light': theme === 'light',\n 'cds--number--nolabel': !label,\n 'cds--number--helpertext': helperText,\n 'cds--skeleton': skeleton,\n 'cds--number--sm': size === 'sm',\n 'cds--number--xl': size === 'xl'\n }\"\n>\n <div\n class=\"cds--number__input-wrapper\"\n [ngClass]=\"{\n 'cds--number__input-wrapper--warning': warn\n }\"\n >\n <input\n type=\"number\"\n [id]=\"id\"\n ofeNumberScroll\n [value]=\"value\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (input)=\"onNumberInputChange($event)\"\n />\n <div class=\"cds--number__controls\">\n <button\n type=\"button\"\n class=\"cds--number__control-btn down-icon\"\n (click)=\"onDecrement()\"\n title=\"Decrement number\"\n [attr.aria-label]=\"decrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"down-icon\"\n >\n <path d=\"M8 15H24V17H8z\"></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n <button\n type=\"button\"\n class=\"cds--number__control-btn up-icon\"\n (click)=\"onIncrement()\"\n title=\"Increment number\"\n [attr.aria-label]=\"incrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"up-icon\"\n >\n <path\n d=\"M17 15L17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\"\n ></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n </div>\n </div>\n <div *ngIf=\"helperText && !invalid && !warn\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</div>\n", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NumberInputDirective, selector: "[ofeNumberScroll]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
184
|
+
], ngImport: i0, template: "<div\n data-numberinput\n [attr.data-invalid]=\"invalid ? true : null\"\n class=\"cds--number\"\n [ngClass]=\"{\n 'cds--number--light': theme === 'light',\n 'cds--number--nolabel': !label,\n 'cds--number--helpertext': helperText,\n 'cds--skeleton': skeleton,\n 'cds--number--sm': size === 'sm',\n 'cds--number--xl': size === 'xl'\n }\"\n>\n <div\n class=\"cds--number__input-wrapper\"\n [ngClass]=\"{\n 'cds--number__input-wrapper--warning': warn\n }\"\n >\n <input\n type=\"number\"\n [id]=\"id\"\n ofeNumberScroll\n [value]=\"value\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (input)=\"onNumberInputChange($event)\"\n />\n <div class=\"cds--number__controls\">\n <button\n type=\"button\"\n class=\"cds--number__control-btn down-icon\"\n (click)=\"onDecrement()\"\n title=\"Decrement number\"\n [attr.aria-label]=\"decrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"down-icon\"\n >\n <path d=\"M8 15H24V17H8z\"></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n <button\n type=\"button\"\n class=\"cds--number__control-btn up-icon\"\n (click)=\"onIncrement()\"\n title=\"Increment number\"\n [attr.aria-label]=\"incrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"up-icon\"\n >\n <path\n d=\"M17 15L17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\"\n ></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n </div>\n </div>\n <div *ngIf=\"helperText && !invalid && !warn\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</div>\n", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NumberInputDirective, selector: "[ofeNumberScroll]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
177
185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
178
186
|
type: Component,
|
|
179
187
|
args: [{
|
|
@@ -207,6 +215,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
207
215
|
type: Input
|
|
208
216
|
}], max: [{
|
|
209
217
|
type: Input
|
|
218
|
+
}], maxlength: [{
|
|
219
|
+
type: Input
|
|
220
|
+
}], minlength: [{
|
|
221
|
+
type: Input
|
|
210
222
|
}], label: [{
|
|
211
223
|
type: Input
|
|
212
224
|
}], helperText: [{
|
|
@@ -231,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
231
243
|
type: HostListener,
|
|
232
244
|
args: ['focusout']
|
|
233
245
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0NBUzdCO0FBYUQsTUFBTSxPQUFPLG9CQUFvQjtJQW1HL0I7O09BRUc7SUFDSDtRQWhHQTs7V0FFRztRQUNNLFVBQUssR0FBcUIsTUFBTSxDQUFDO1FBQzFDOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCOztXQUVHO1FBQ00sT0FBRSxHQUFHLFVBQVUsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0Q7O1dBRUc7UUFDTSxTQUFJLEdBQXVCLElBQUksQ0FBQztRQW1CekM7O1dBRUc7UUFDTSxRQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ3BCOztXQUVHO1FBQ00sUUFBRyxHQUFHLElBQUksQ0FBQztRQWFwQjs7V0FFRztRQUNNLFNBQUksR0FBRyxDQUFDLENBQUM7UUFLbEI7O1dBRUc7UUFDTSxTQUFJLEdB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S0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBY0csR0FBRztzQkFBWCxLQUFLO2dCQUlHLEdBQUc7c0JBQVgsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLFlBQVk7c0JBQXJCLE1BQU07Z0JBSUUsY0FBYztzQkFBdEIsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLO2dCQW1DTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIFVzZWQgdG8gZW1pdCBjaGFuZ2VzIHBlcmZvcm1lZCBvbiBudW1iZXIgaW5wdXQgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlckNoYW5nZUV2ZW50IHtcbiAgLyoqXG4gICAqIENvbnRhaW5zIHRoZSBgTnVtYmVySW5wdXRDb21wb25lbnRgIHRoYXQgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICovXG4gIHNvdXJjZTogTnVtYmVySW5wdXRDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGBOdW1iZXJJbnB1dENvbXBvbmVudGAgZmllbGQgZW5jb21wYXNzZWQgaW4gdGhlIGBOdW1iZXJDaGFuZ2VgIGNsYXNzLlxuICAgKi9cbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2ZlLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFZhcmlhYmxlIHVzZWQgZm9yIGNyZWF0aW5nIHVuaXF1ZSBpZHMgZm9yIG51bWJlciBpbnB1dCBjb21wb25lbnRzLlxuICAgKi9cbiAgc3RhdGljIG51bWJlckNvdW50ID0gMDtcblxuICAvKipcbiAgICogYGxpZ2h0YCBvciBgZGFya2AgbnVtYmVyIGlucHV0IHRoZW1lLlxuICAgKi9cbiAgQElucHV0KCkgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnZGFyayc7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGRpc2FibGVkIG51bWJlciBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgbnVtYmVyIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhbiBpbnZhbGlkIG51bWJlciBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkIGZvciB0aGUgbnVtYmVyIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGlkID0gYG51bWJlci0ke051bWJlcklucHV0Q29tcG9uZW50Lm51bWJlckNvdW50fWA7XG4gIC8qKlxuICAgKiBOdW1iZXIgaW5wdXQgZmllbGQgcmVuZGVyIHNpemVcbiAgICovXG4gIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbWQnIHwgJ3hsJyA9ICdtZCc7XG4gIC8qKlxuICAgKiBSZWZsZWN0cyB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ID09PSAnJyB8fCB2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gTnVtYmVyKHYpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICAvKipcbiAgICogU2V0cyB0aGUgbWluIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgbWluID0gbnVsbDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heCBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIG1heCA9IG51bGw7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZXh0IGluc2lkZSB0aGUgYGxhYmVsYCB0YWcuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wdGlvbmFsIGhlbHBlciB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGludmFsaWQgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWRUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU2V0cyB0aGUgYW1vdW50IHRoZSBudW1iZXIgY29udHJvbHMgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnkuXG4gICAqL1xuICBASW5wdXQoKSBzdGVwID0gMTtcbiAgLyoqXG4gICAqIElmIGBzdGVwYCBpcyBhIGRlY2ltYWwsIHdlIG1heSB3YW50IHByZWNpc2lvbiB0byBiZSBzZXQgdG8gZ28gYXJvdW5kIGZsb2F0aW5nIHBvaW50IHByZWNpc2lvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByZWNpc2lvbjogbnVtYmVyO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5pbmdUZXh0KVxuICAgKi9cbiAgQElucHV0KCkgd2FybiA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG4gICAqL1xuICBASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IG5vdGlmeWluZyBvdGhlciBjbGFzc2VzIHdoZW4gYSBjaGFuZ2UgaW4gc3RhdGUgb2NjdXJzIGluIHRoZSBpbnB1dC5cbiAgICovXG4gIEBPdXRwdXQoKSBudW1iZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE51bWJlckNoYW5nZUV2ZW50PigpO1xuICAvKipcbiAgICogU2V0cyB0aGUgZGVjcmVtZW50IGxhYmVsIHRleHRcbiAgICovXG4gIEBJbnB1dCgpIGRlY3JlbWVudExhYmVsID0gJ0RlY3JlYXNlJztcbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY3JlbWVudCBsYWJlbCB0ZXh0XG4gICAqL1xuICBASW5wdXQoKSBpbmNyZW1lbnRMYWJlbCA9ICdJbmNyZWFzZSc7XG5cbiAgcHJvdGVjdGVkIF92YWx1ZSA9IDA7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYE51bWJlcmAuXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBOdW1iZXJJbnB1dENvbXBvbmVudC5udW1iZXJDb3VudCsrO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIG1ldGhvZCBpbiBvcmRlciB0byBwcm9wYWdhdGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBudW1iZXIgaW5wdXQgaXMgdG91Y2hlZC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgZm9jdXNPdXQoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSB0aHJvdWdoIHRoZSBtb2RlbFxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbnVtYmVyIGlucHV0IGlzIGJsdXJyZWQuIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYC5cbiAgICovXG4gIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBzZXQgaW4gYHJlZ2lzdGVyT25DaGFuZ2VgIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm0uXG4gICAqL1xuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuICAvKipcbiAgICogQWRkcyBgc3RlcGAgdG8gdGhlIGN1cnJlbnQgYHZhbHVlYC5cbiAgICovXG4gIG9uSW5jcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX3ZhbHVlIHx8IDA7XG5cbiAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgdmFsICsgdGhpcy5zdGVwIDw9IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCgodmFsICsgdGhpcy5zdGVwKS50b1ByZWNpc2lvbih0aGlzLnByZWNpc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYHN0ZXBgIHRvIHRoZSBjdXJyZW50IGB2YWx1ZWAuXG4gICAqL1xuICBvbkRlY3JlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLl92YWx1ZSB8fCAwO1xuXG4gICAgaWYgKHRoaXMubWluID09PSBudWxsIHx8IHZhbCAtIHRoaXMuc3RlcCA+PSB0aGlzLm1pbikge1xuICAgICAgdGhpcy52YWx1ZSA9IHBhcnNlRmxvYXQoKHZhbCAtIHRoaXMuc3RlcCkudG9QcmVjaXNpb24odGhpcy5wcmVjaXNpb24pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNsYXNzIG9mIGBOdW1iZXJDaGFuZ2VgIHRvIGVtaXQgdGhlIGNoYW5nZSBpbiB0aGUgYE51bWJlcmAuXG4gICAqL1xuICBlbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTnVtYmVyQ2hhbmdlRXZlbnQoKTtcbiAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgIGV2ZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG9uTnVtYmVySW5wdXRDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG59XG4iLCI8ZGl2XG4gIGRhdGEtbnVtYmVyaW5wdXRcbiAgW2F0dHIuZGF0YS1pbnZhbGlkXT1cImludmFsaWQgPyB0cnVlIDogbnVsbFwiXG4gIGNsYXNzPVwiY2RzLS1udW1iZXJcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2Nkcy0tbnVtYmVyLS1saWdodCc6IHRoZW1lID09PSAnbGlnaHQnLFxuICAgICdjZHMtLW51bWJlci0tbm9sYWJlbCc6ICFsYWJlbCxcbiAgICAnY2RzLS1udW1iZXItLWhlbHBlcnRleHQnOiBoZWxwZXJUZXh0LFxuICAgICdjZHMtLXNrZWxldG9uJzogc2tlbGV0b24sXG4gICAgJ2Nkcy0tbnVtYmVyLS1zbSc6IHNpemUgPT09ICdzbScsXG4gICAgJ2Nkcy0tbnVtYmVyLS14bCc6IHNpemUgPT09ICd4bCdcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNkcy0tbnVtYmVyX19pbnB1dC13cmFwcGVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnY2RzLS1udW1iZXJfX2lucHV0LXdyYXBwZXItLXdhcm5pbmcnOiB3YXJuXG4gICAgfVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIG9mZU51bWJlclNjcm9sbFxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAoaW5wdXQpPVwib25OdW1iZXJJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJjZHMtLW51bWJlcl9fY29udHJvbHNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2RzLS1udW1iZXJfX2NvbnRyb2wtYnRuIGRvd24taWNvblwiXG4gICAgICAgIChjbGljayk9XCJvbkRlY3JlbWVudCgpXCJcbiAgICAgICAgdGl0bGU9XCJEZWNyZW1lbnQgbnVtYmVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZWNyZW1lbnRMYWJlbFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImRvd24taWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMTVIMjRWMTdIOHpcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2RzLS1udW1iZXJfX3J1bGUtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJjZHMtLW51bWJlcl9fY29udHJvbC1idG4gdXAtaWNvblwiXG4gICAgICAgIChjbGljayk9XCJvbkluY3JlbWVudCgpXCJcbiAgICAgICAgdGl0bGU9XCJJbmNyZW1lbnQgbnVtYmVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbmNyZW1lbnRMYWJlbFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cInVwLWljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTcgMTVMMTcgOCAxNSA4IDE1IDE1IDggMTUgOCAxNyAxNSAxNyAxNSAyNCAxNyAyNCAxNyAxNyAyNCAxNyAyNCAxNXpcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2RzLS1udW1iZXJfX3J1bGUtZGl2aWRlclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhlbHBlclRleHQgJiYgIWludmFsaWQgJiYgIXdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybV9faGVscGVyLXRleHRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaGVscGVyVGV4dClcIj57e1xuICAgICAgaGVscGVyVGV4dFxuICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIXdhcm4gJiYgaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7XG4gICAgICBpbnZhbGlkVGV4dFxuICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaW52YWxpZCAmJiB3YXJuXCIgY2xhc3M9XCJjZHMtLWZvcm0tcmVxdWlyZW1lbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUod2FyblRleHQpXCI+e3sgd2FyblRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiaXNUZW1wbGF0ZSh3YXJuVGV4dClcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0NBUzdCO0FBYUQsTUFBTSxPQUFPLG9CQUFvQjtJQTJHL0I7O09BRUc7SUFDSDtRQXhHQTs7V0FFRztRQUNNLFVBQUssR0FBcUIsTUFBTSxDQUFDO1FBQzFDOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCOztXQUVHO1FBQ00sT0FBRSxHQUFHLFVBQVUsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0Q7O1dBRUc7UUFDTSxTQUFJLEdBQXVCLElBQUksQ0FBQztRQW1CekM7O1dBRUc7UUFDTSxRQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ3BCOztXQUVHO1FBQ00sUUFBRyxHQUFHLElBQUksQ0FBQztRQUNwQjs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDMUI7O1VBRUU7UUFDUSxjQUFTLEdB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O3NCQUFoQixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxFQUFFO3NCQUFWLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFjRyxHQUFHO3NCQUFYLEtBQUs7Z0JBSUcsR0FBRztzQkFBWCxLQUFLO2dCQUlJLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUksU0FBUztzQkFBakIsS0FBSztnQkFJQyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLFlBQVk7c0JBQXJCLE1BQU07Z0JBSUUsY0FBYztzQkFBdEIsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLO2dCQW1DTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIFVzZWQgdG8gZW1pdCBjaGFuZ2VzIHBlcmZvcm1lZCBvbiBudW1iZXIgaW5wdXQgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlckNoYW5nZUV2ZW50IHtcbiAgLyoqXG4gICAqIENvbnRhaW5zIHRoZSBgTnVtYmVySW5wdXRDb21wb25lbnRgIHRoYXQgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICovXG4gIHNvdXJjZTogTnVtYmVySW5wdXRDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGBOdW1iZXJJbnB1dENvbXBvbmVudGAgZmllbGQgZW5jb21wYXNzZWQgaW4gdGhlIGBOdW1iZXJDaGFuZ2VgIGNsYXNzLlxuICAgKi9cbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2ZlLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFZhcmlhYmxlIHVzZWQgZm9yIGNyZWF0aW5nIHVuaXF1ZSBpZHMgZm9yIG51bWJlciBpbnB1dCBjb21wb25lbnRzLlxuICAgKi9cbiAgc3RhdGljIG51bWJlckNvdW50ID0gMDtcblxuICAvKipcbiAgICogYGxpZ2h0YCBvciBgZGFya2AgbnVtYmVyIGlucHV0IHRoZW1lLlxuICAgKi9cbiAgQElucHV0KCkgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnZGFyayc7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGRpc2FibGVkIG51bWJlciBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgbnVtYmVyIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhbiBpbnZhbGlkIG51bWJlciBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkIGZvciB0aGUgbnVtYmVyIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGlkID0gYG51bWJlci0ke051bWJlcklucHV0Q29tcG9uZW50Lm51bWJlckNvdW50fWA7XG4gIC8qKlxuICAgKiBOdW1iZXIgaW5wdXQgZmllbGQgcmVuZGVyIHNpemVcbiAgICovXG4gIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbWQnIHwgJ3hsJyA9ICdtZCc7XG4gIC8qKlxuICAgKiBSZWZsZWN0cyB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ID09PSAnJyB8fCB2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gTnVtYmVyKHYpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICAvKipcbiAgICogU2V0cyB0aGUgbWluIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgbWluID0gbnVsbDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heCBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIG1heCA9IG51bGw7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXggbGVuZ3RoIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgIEBJbnB1dCgpIG1heGxlbmd0aCA9IG51bGw7XG4gICAvKipcbiAgICogU2V0cyB0aGUgbWluIGxlbmd0aCBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gICAgQElucHV0KCkgbWlubGVuZ3RoID0gbnVsbDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHRleHQgaW5zaWRlIHRoZSBgbGFiZWxgIHRhZy5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU2V0cyB0aGUgb3B0aW9uYWwgaGVscGVyIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU2V0cyB0aGUgaW52YWxpZCB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdGhlIG51bWJlciBjb250cm9scyBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBieS5cbiAgICovXG4gIEBJbnB1dCgpIHN0ZXAgPSAxO1xuICAvKipcbiAgICogSWYgYHN0ZXBgIGlzIGEgZGVjaW1hbCwgd2UgbWF5IHdhbnQgcHJlY2lzaW9uIHRvIGJlIHNldCB0byBnbyBhcm91bmQgZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uLlxuICAgKi9cbiAgQElucHV0KCkgcHJlY2lzaW9uOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIChjb250ZW50cyBzZXQgYnkgd2FybmluZ1RleHQpXG4gICAqL1xuICBASW5wdXQoKSB3YXJuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcbiAgICovXG4gIEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogRW1pdHMgZXZlbnQgbm90aWZ5aW5nIG90aGVyIGNsYXNzZXMgd2hlbiBhIGNoYW5nZSBpbiBzdGF0ZSBvY2N1cnMgaW4gdGhlIGlucHV0LlxuICAgKi9cbiAgQE91dHB1dCgpIG51bWJlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TnVtYmVyQ2hhbmdlRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWNyZW1lbnQgbGFiZWwgdGV4dFxuICAgKi9cbiAgQElucHV0KCkgZGVjcmVtZW50TGFiZWwgPSAnRGVjcmVhc2UnO1xuICAvKipcbiAgICogU2V0cyB0aGUgaW5jcmVtZW50IGxhYmVsIHRleHRcbiAgICovXG4gIEBJbnB1dCgpIGluY3JlbWVudExhYmVsID0gJ0luY3JlYXNlJztcblxuICBwcm90ZWN0ZWQgX3ZhbHVlID0gMDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBgTnVtYmVyYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIE51bWJlcklucHV0Q29tcG9uZW50Lm51bWJlckNvdW50Kys7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgbWV0aG9kIGluIG9yZGVyIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm0uXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udHJvbCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIG51bWJlciBpbnB1dCBpcyB0b3VjaGVkLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBmb2N1c091dCgpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIHRocm91Z2ggdGhlIG1vZGVsXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBudW1iZXIgaW5wdXQgaXMgYmx1cnJlZC4gTmVlZGVkIHRvIHByb3Blcmx5IGltcGxlbWVudCBgQ29udHJvbFZhbHVlQWNjZXNzb3JgLlxuICAgKi9cbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogTWV0aG9kIHNldCBpbiBgcmVnaXN0ZXJPbkNoYW5nZWAgdG8gcHJvcGFnYXRlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybS5cbiAgICovXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBBZGRzIGBzdGVwYCB0byB0aGUgY3VycmVudCBgdmFsdWVgLlxuICAgKi9cbiAgb25JbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5fdmFsdWUgfHwgMDtcblxuICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCB2YWwgKyB0aGlzLnN0ZXAgPD0gdGhpcy5tYXgpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBwYXJzZUZsb2F0KCh2YWwgKyB0aGlzLnN0ZXApLnRvUHJlY2lzaW9uKHRoaXMucHJlY2lzaW9uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1heDtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBgc3RlcGAgdG8gdGhlIGN1cnJlbnQgYHZhbHVlYC5cbiAgICovXG4gIG9uRGVjcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX3ZhbHVlIHx8IDA7XG5cbiAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgdmFsIC0gdGhpcy5zdGVwID49IHRoaXMubWluKSB7XG4gICAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCgodmFsIC0gdGhpcy5zdGVwKS50b1ByZWNpc2lvbih0aGlzLnByZWNpc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW47XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY2xhc3Mgb2YgYE51bWJlckNoYW5nZWAgdG8gZW1pdCB0aGUgY2hhbmdlIGluIHRoZSBgTnVtYmVyYC5cbiAgICovXG4gIGVtaXRDaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBOdW1iZXJDaGFuZ2VFdmVudCgpO1xuICAgIGV2ZW50LnNvdXJjZSA9IHRoaXM7XG4gICAgZXZlbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25OdW1iZXJJbnB1dENoYW5nZShldmVudCkge1xuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS1udW1iZXJpbnB1dFxuICBbYXR0ci5kYXRhLWludmFsaWRdPVwiaW52YWxpZCA/IHRydWUgOiBudWxsXCJcbiAgY2xhc3M9XCJjZHMtLW51bWJlclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnY2RzLS1udW1iZXItLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG4gICAgJ2Nkcy0tbnVtYmVyLS1ub2xhYmVsJzogIWxhYmVsLFxuICAgICdjZHMtLW51bWJlci0taGVscGVydGV4dCc6IGhlbHBlclRleHQsXG4gICAgJ2Nkcy0tc2tlbGV0b24nOiBza2VsZXRvbixcbiAgICAnY2RzLS1udW1iZXItLXNtJzogc2l6ZSA9PT0gJ3NtJyxcbiAgICAnY2RzLS1udW1iZXItLXhsJzogc2l6ZSA9PT0gJ3hsJ1xuICB9XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2RzLS1udW1iZXJfX2lucHV0LXdyYXBwZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdjZHMtLW51bWJlcl9faW5wdXQtd3JhcHBlci0td2FybmluZyc6IHdhcm5cbiAgICB9XCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICBbaWRdPVwiaWRcIlxuICAgICAgb2ZlTnVtYmVyU2Nyb2xsXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICBbYXR0ci5tYXhdPVwibWF4XCJcbiAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgW2F0dHIubWlubGVuZ3RoXT1cIm1pbmxlbmd0aFwiXG4gICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAoaW5wdXQpPVwib25OdW1iZXJJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxkaXYgY2xhc3M9XCJjZHMtLW51bWJlcl9fY29udHJvbHNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2RzLS1udW1iZXJfX2NvbnRyb2wtYnRuIGRvd24taWNvblwiXG4gICAgICAgIChjbGljayk9XCJvbkRlY3JlbWVudCgpXCJcbiAgICAgICAgdGl0bGU9XCJEZWNyZW1lbnQgbnVtYmVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZWNyZW1lbnRMYWJlbFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImRvd24taWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMTVIMjRWMTdIOHpcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2RzLS1udW1iZXJfX3J1bGUtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJjZHMtLW51bWJlcl9fY29udHJvbC1idG4gdXAtaWNvblwiXG4gICAgICAgIChjbGljayk9XCJvbkluY3JlbWVudCgpXCJcbiAgICAgICAgdGl0bGU9XCJJbmNyZW1lbnQgbnVtYmVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbmNyZW1lbnRMYWJlbFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cInVwLWljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTcgMTVMMTcgOCAxNSA4IDE1IDE1IDggMTUgOCAxNyAxNSAxNyAxNSAyNCAxNyAyNCAxNyAxNyAyNCAxNyAyNCAxNXpcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2RzLS1udW1iZXJfX3J1bGUtZGl2aWRlclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhlbHBlclRleHQgJiYgIWludmFsaWQgJiYgIXdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybV9faGVscGVyLXRleHRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaGVscGVyVGV4dClcIj57e1xuICAgICAgaGVscGVyVGV4dFxuICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIXdhcm4gJiYgaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7XG4gICAgICBpbnZhbGlkVGV4dFxuICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaW52YWxpZCAmJiB3YXJuXCIgY2xhc3M9XCJjZHMtLWZvcm0tcmVxdWlyZW1lbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUod2FyblRleHQpXCI+e3sgd2FyblRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiaXNUZW1wbGF0ZSh3YXJuVGV4dClcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|