@sumaris-net/ngx-components 2.4.0 → 2.4.2
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/doc/changelog.md +18 -1
- package/esm2020/public_api.mjs +2 -1
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +2 -2
- package/esm2020/src/app/core/form/form.utils.mjs +11 -1
- package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +3 -3
- package/esm2020/src/app/core/graphql/graphql.service.mjs +14 -5
- package/esm2020/src/app/core/services/local-settings.service.mjs +1 -1
- package/esm2020/src/app/core/services/network.service.mjs +1 -1
- package/esm2020/src/app/core/services/storage/entity-store.class.mjs +1 -1
- package/esm2020/src/app/core/table/async-table.class.mjs +9 -5
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +1 -1
- package/esm2020/src/app/core/table/table.class.mjs +3 -2
- package/esm2020/src/app/shared/dates.mjs +5 -3
- package/esm2020/src/app/shared/events.mjs +1 -1
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +16 -15
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +225 -167
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +10 -7
- package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +103 -0
- package/esm2020/src/app/shared/material/material.testing.module.mjs +12 -1
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +1 -1
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +1 -1
- package/esm2020/src/app/social/user-event/user-event.service.mjs +1 -1
- package/fesm2015/sumaris-net.ngx-components.mjs +474 -291
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +474 -292
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +2 -2
- package/public_api.d.ts +1 -0
- package/src/app/core/form/entity/entity-editor.class.d.ts +1 -1
- package/src/app/core/form/form.utils.d.ts +1 -1
- package/src/app/core/graphql/graphql.service.d.ts +5 -2
- package/src/app/shared/dates.d.ts +1 -1
- package/src/app/shared/events.d.ts +2 -2
- package/src/app/shared/material/datetime/material.date.d.ts +2 -2
- package/src/app/shared/material/datetime/material.dateshort.d.ts +40 -32
- package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +29 -0
- package/src/app/shared/material/material.testing.module.d.ts +16 -15
- package/src/app/shared/pipes/date-format.pipe.d.ts +1 -1
- package/src/theme/_ngx-components.scss +15 -9
|
@@ -269,6 +269,8 @@ export class AppFormArray extends UntypedFormArray {
|
|
|
269
269
|
* @param options
|
|
270
270
|
*/
|
|
271
271
|
setValue(values, options) {
|
|
272
|
+
if (values === undefined)
|
|
273
|
+
throw new Error('\'undefined\' value not allowed in AppFormArray.setValue()');
|
|
272
274
|
if (this.options.allowReuseControls === false) {
|
|
273
275
|
const disabled = this.disabled;
|
|
274
276
|
// Clean all
|
|
@@ -291,6 +293,14 @@ export class AppFormArray extends UntypedFormArray {
|
|
|
291
293
|
}
|
|
292
294
|
}
|
|
293
295
|
patchValue(values, options) {
|
|
296
|
+
// /!\ From the official Angular 'FormGroup.patchValue()' :
|
|
297
|
+
// "Even though the `value` argument type doesn't allow `null` and `undefined` values, the
|
|
298
|
+
// `patchValue` can be called recursively and inner data structures might have these values, so
|
|
299
|
+
// we just ignore such cases when a field containing FormGroup instance receives `null` or
|
|
300
|
+
// `undefined` as a value."
|
|
301
|
+
// BUT in AppFormArray, we only ignore the `undefined` value, so `null` value will reset the array (zero length).
|
|
302
|
+
if (values === undefined)
|
|
303
|
+
return;
|
|
294
304
|
if (this.options.allowReuseControls === false) {
|
|
295
305
|
const disabled = this.disabled;
|
|
296
306
|
// Clean all
|
|
@@ -460,4 +470,4 @@ export function resetCalculatedValue(controls, controlName) {
|
|
|
460
470
|
AppFormUtils.setCalculatedValue(controls, controlName, undefined);
|
|
461
471
|
}
|
|
462
472
|
}
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQyxnQkFBZ0IsRUFBc0IsZ0JBQWdCLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1SSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxPQUFPLEVBQWlCLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUF3QzVCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFDVyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBMEIzQixDQUFDO0lBekJDLElBQUksUUFBUTtRQUNW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LENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZILENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBMkMsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQzVILHVCQUF1QjtJQUN2QixRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLHFDQUFxQztJQUNyQyxRQUFRLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQTJDLEVBQUUsV0FBbUI7SUFDbkcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUM3QyxtREFBbUQ7UUFDbkQsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDbkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEFic3RyYWN0Q29udHJvbE9wdGlvbnMsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RW50aXR5fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtyb3VuZCwgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7ZmlsdGVyTnVtYmVySW5wdXQsIHNlbGVjdElucHV0Q29udGVudH0gZnJvbSAnLi4vLi4vc2hhcmVkL2lucHV0cyc7XG5pbXBvcnQge3dhaXRGb3IsIFdhaXRGb3JPcHRpb25zfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtcbiAgYWRkVmFsdWVJbkFycmF5LFxuICBjbGVhclZhbHVlSW5BcnJheSxcbiAgY29weUVudGl0eTJGb3JtLFxuICBkaXNhYmxlQ29udHJvbHMsXG4gIGdldENvbnRyb2xGcm9tUGF0aCxcbiAgZ2V0Rm9ybUVycm9ycyxcbiAgZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eSxcbiAgbG9nRm9ybUVycm9ycyxcbiAgbWFya0FsbEFzVG91Y2hlZCxcbiAgbWFya0FzVW50b3VjaGVkLFxuICByZW1vdmVWYWx1ZUluQXJyYXksXG4gIHJlc2l6ZUFycmF5LFxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5LFxuICB3YWl0SWRsZSxcbiAgd2FpdFdoaWxlUGVuZGluZ1xufSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIElBcHBGb3JtR2V0dGVyID0gKCkgPT4gSUFwcEZvcm07XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBPblJlYWR5IHtcbiAgbmdPblJlYWR5KCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEZvcm0gIHtcbiAgLy8gRnJvbSBBbmd1bGFyIGZvcm1cbiAgaW52YWxpZDogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIGRpcnR5OiBib29sZWFuO1xuICBwZW5kaW5nOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdG91Y2hlZDogYm9vbGVhbjtcbiAgdW50b3VjaGVkOiBib29sZWFuO1xuXG4gIC8vIFNwZWNpZmljIHRvIElBcHBGb3JtXG4gIGVtcHR5PzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHJlYWR5KCk6IFByb21pc2U8dm9pZD47XG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8YW55PjtcblxuICBkaXNhYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG5cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTtcbiAgbWFya0FzRGlydHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc0xvYWRlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzUmVhZHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG59XG5cblxuLyoqXG4gKiBBIGZvcm0gdGhhdCBkbyBub3RoaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBOdWxsRm9ybSBpbXBsZW1lbnRzIElBcHBGb3JtIHtcbiAgcmVhZG9ubHkgaW52YWxpZCA9IGZhbHNlO1xuICByZWFkb25seSB2YWxpZCA9IGZhbHNlO1xuICByZWFkb25seSBkaXJ0eSA9IGZhbHNlO1xuICByZWFkb25seSBlbXB0eSA9IHRydWU7XG4gIHJlYWRvbmx5IHBlbmRpbmcgPSBmYWxzZTtcbiAgcmVhZG9ubHkgZXJyb3IgPSBudWxsO1xuICByZWFkb25seSBlbmFibGVkID0gZmFsc2U7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBmYWxzZTtcbiAgcmVhZG9ubHkgdG91Y2hlZCA9IGZhbHNlO1xuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmVuYWJsZWQ7XG4gIH1cbiAgZ2V0IHVudG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudG91Y2hlZDtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBbGxBc1RvdWNoZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7fVxuICBtYXJrQXNEaXJ0eShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNMb2FkZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNSZWFkeShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG5cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZmFsc2UpO1xuICB9XG4gIHJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRydWUpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcEZvcm1Qcm92aWRlcjxGIGV4dGVuZHMgSUFwcEZvcm0gPSBJQXBwRm9ybT4gaW1wbGVtZW50cyBJQXBwRm9ybSB7XG4gIHN0YXRpYyBOVUxMX0ZPUk0gPSBuZXcgQXBwTnVsbEZvcm0oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdldHRlckZuOiAoKSA9PiBGKSB7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZWxlZ2F0ZSgpOiBJQXBwRm9ybSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0dGVyRm4oKSB8fCBBcHBGb3JtUHJvdmlkZXIuTlVMTF9GT1JNO1xuICB9XG5cbiAgd2FpdERlbGVnYXRlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8Rj4ge1xuICAgIGxldCBjb250ZW50OiBGO1xuICAgIHJldHVybiB3YWl0Rm9yKCgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLmdldHRlckZuKCk7XG4gICAgICByZXR1cm4gISFjb250ZW50O1xuICAgIH0sIG9wdHMpLnRoZW4oXyA9PiBjb250ZW50KTtcbiAgfVxuXG4gIC8qIC0tIGRlbGVnYXRlZCBtZXRob2RzIC0tICovXG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZW5hYmxlZDtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZGlzYWJsZWQ7XG4gIH1cbiAgZ2V0IGVycm9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZXJyb3I7XG4gIH1cbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuaW52YWxpZDtcbiAgfVxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudmFsaWQ7XG4gIH1cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpcnR5O1xuICB9XG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbXB0eTtcbiAgfVxuICBnZXQgcGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wZW5kaW5nO1xuICB9XG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmxvYWRpbmc7XG4gIH1cbiAgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudG91Y2hlZDtcbiAgfVxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnVudG91Y2hlZDtcbiAgfVxuICByZWFkeSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnJlYWR5KCk7XG4gIH1cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS53YWl0SWRsZSgpO1xuICB9XG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpc2FibGUob3B0cyk7XG4gIH1cbiAgZW5hYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbmFibGUob3B0cyk7XG4gIH1cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1ByaXN0aW5lKG9wdHMpO1xuICB9XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIH1cbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQWxsQXNUb3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc0RpcnR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNEaXJ0eShvcHRzKTtcbiAgfVxuICBtYXJrQXNMb2FkaW5nKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzTG9hZGluZyhvcHRzKTtcbiAgfVxuICBtYXJrQXNMb2FkZWQob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNMb2FkZWQob3B0cyk7XG4gIH1cbiAgbWFya0FzUmVhZHkob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNSZWFkeShvcHRzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1BcnJheUhlbHBlck9wdGlvbnMge1xuICBhbGxvd0VtcHR5QXJyYXk6IGJvb2xlYW47IC8vIGZhbHNlIGJ5IGRlZmF1bHRcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtQXJyYXlIZWxwZXI8VCA9IEVudGl0eTxhbnk+LCBDIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sID0gQWJzdHJhY3RDb250cm9sPiB7XG5cbiAgc3RhdGljIGdldE9yQ3JlYXRlQXJyYXkoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIGFycmF5TmFtZTogc3RyaW5nKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBmb3JtLmRpc2FibGVkO1xuICAgIGxldCBhcnJheUNvbnRyb2wgPSBmb3JtLmdldChhcnJheU5hbWUpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgaWYgKCFhcnJheUNvbnRyb2wpIHtcbiAgICAgIGFycmF5Q29udHJvbCA9IGZvcm1CdWlsZGVyLmFycmF5KFtdKTtcblxuICAgICAgLy8gQXBwbHkgcGFyZW50IGRpc2FibGVkIHN0YXRlLCBiZWZvcmUgdG8gcHVzaCBpdCBpbnRvIHRoZSBhcnJheVxuICAgICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWQsIGFmdGVyIGNhbGxpbmcgcmVzaXplQXJyYXkoKVxuICAgICAgaWYgKGRpc2FibGVkICYmIGFycmF5Q29udHJvbC5lbmFibGVkKSBhcnJheUNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICBmb3JtLmFkZENvbnRyb2woYXJyYXlOYW1lLCBhcnJheUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlDb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWxsb3dFbXB0eUFycmF5OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuXG4gIGdldCBhbGxvd0VtcHR5QXJyYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93RW1wdHlBcnJheTtcbiAgfVxuXG4gIHNldCBhbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZm9ybUFycmF5KCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtQXJyYXk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgcHJpdmF0ZSBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBUKSA9PiBDLFxuICAgIHByaXZhdGUgZXF1YWxzOiAodjE6IFQsIHYyOiBUKSA9PiBib29sZWFuLFxuICAgIHByaXZhdGUgaXNFbXB0eTogKHZhbHVlOiBUKSA9PiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiBGb3JtQXJyYXlIZWxwZXJPcHRpb25zXG4gICkge1xuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSBvcHRpb25zICYmIG9wdGlvbnMudmFsaWRhdG9ycztcblxuICAgIC8vIGVtcHR5IGFycmF5IG5vdCBhbGxvdyBieSBkZWZhdWx0XG4gICAgdGhpcy5zZXRBbGxvd0VtcHR5QXJyYXkodG9Cb29sZWFuKG9wdGlvbnM/LmFsbG93RW1wdHlBcnJheSwgZmFsc2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGFkZCh2YWx1ZT86IFQsIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFkZFZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuY3JlYXRlQ29udHJvbCwgdGhpcy5lcXVhbHMsIHRoaXMuaXNFbXB0eSwgdmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcikge1xuICAgIC8vIERvIG5vdCByZW1vdmUgaWYgbGFzdCBjcml0ZXJpb25cbiAgICBpZiAoIXRoaXMuX2FsbG93RW1wdHlBcnJheSAmJiB0aGlzLl9mb3JtQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVtb3ZlVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplKGxlbmd0aDogbnVtYmVyLCBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc2l6ZUFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5jcmVhdGVDb250cm9sLCBsZW5ndGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgY2xlYXJBdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNsZWFyVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gIH1cblxuICBpc0xhc3QoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fZm9ybUFycmF5Lmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIHdoaWxlKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCk7XG4gICAgICBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5Lmxlbmd0aDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBDIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5LmF0KGluZGV4KSBhcyBDO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2l6ZSB0aGUgRm9ybUFycmF5LCB0aGVuIHNldCB2YWx1ZXNcbiAgICogQHBhcmFtIHZhbHVlc1xuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgc2V0VmFsdWUodmFsdWVzOiBUW10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZSh2YWx1ZXM/Lmxlbmd0aHx8MCk7XG4gICAgdGhpcy5fZm9ybUFycmF5LnNldFZhbHVlKHZhbHVlcywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzaXplIHRoZSBGb3JtQXJyYXksIHRoZW4gcGF0Y2ggdmFsdWVzXG4gICAqIEBwYXJhbSB2YWx1ZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHBhdGNoVmFsdWUodmFsdWVzOiBUW10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZSh2YWx1ZXM/Lmxlbmd0aHx8MCk7XG4gICAgdGhpcy5fZm9ybUFycmF5LnBhdGNoVmFsdWUodmFsdWVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5kaXNhYmxlKG9wdHMpKTtcbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmVuYWJsZShvcHRzKSk7XG4gIH1cblxuICBmb3JFYWNoKGl0ZTogKGNvbnRyb2w6IEMpID0+IHZvaWQgKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZSgpO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mb3JtQXJyYXkuYXQoaSkgYXMgQztcbiAgICAgIGlmIChjb250cm9sKSBpdGUoY29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gaW50ZXJuYWwgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXRBbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5ID09PSB2YWx1ZSkgcmV0dXJuOyAvLyBTa2lwIGlmIHNhbWVcblxuICAgIHRoaXMuX2FsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5KSB7XG4gICAgICB0aGlzLl9mb3JtQXJyYXkuc2V0VmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Zvcm1BcnJheS5zZXRWYWxpZGF0b3JzKCh0aGlzLl92YWxpZGF0b3JzIHx8IFtdKS5jb25jYXQoU2hhcmVkRm9ybUFycmF5VmFsaWRhdG9ycy5yZXF1aXJlZEFycmF5TWluTGVuZ3RoKDEpKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBcHBGb3JtQXJyYXlPcHRpb25zIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB7XG4gIGFsbG93RW1wdHlBcnJheT86IGJvb2xlYW47IC8vIHRydWUgYnkgZGVmYXVsdFxuICBhbGxvd1JldXNlQ29udHJvbHM/OiBib29sZWFuOyAvLyB0cnVlIGJ5IGRlZmF1bHRcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEZvcm1BcnJheTxUIGV4dGVuZHMgRW50aXR5PFQ+LCBDIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPiBleHRlbmRzIFVudHlwZWRGb3JtQXJyYXkge1xuXG4gIHByaXZhdGUgb3B0aW9ucz86IEFwcEZvcm1BcnJheU9wdGlvbnNcblxuICBnZXQgYWxsb3dFbXB0eUFycmF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYWxsb3dFbXB0eUFycmF5O1xuICB9XG5cbiAgc2V0IGFsbG93RW1wdHlBcnJheSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0QWxsb3dFbXB0eUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogVCkgPT4gQyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlcXVhbHM6ICh2MTogVCwgdjI6IFQpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHByaXZhdGUgaXNFbXB0eTogKHZhbHVlOiBUKSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICBvcHRpb25zPzogQXBwRm9ybUFycmF5T3B0aW9ucyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIoW10sIG9wdGlvbnMpOy8vIGVtcHR5IGFycmF5IG5vdCBhbGxvdyBieSBkZWZhdWx0XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgYWxsb3dFbXB0eUFycmF5OiB0cnVlLFxuICAgICAgYWxsb3dSZXVzZUNvbnRyb2xzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH1cbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh0aGlzLm9wdGlvbnMuYWxsb3dFbXB0eUFycmF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXSWxsIHJlYnVpbGQgdGhlIGFycmF5LCB1c2luZyB0aGUgZ2l2ZW4gdmFsdWVzXG4gICAqIEBwYXJhbSB2YWx1ZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHNldFZhbHVlKHZhbHVlczogYW55W10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93UmV1c2VDb250cm9scyA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcblxuICAgICAgLy8gQ2xlYW4gYWxsXG4gICAgICB0aGlzLnJlc2l6ZSgwLCB7ZW1pdEV2ZW50OiBvcHRpb25zPy5lbWl0RXZlbnR9KTtcblxuICAgICAgLy8gUmVjcmVhdGUgZWFjaCBjb250cm9sLCB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAgKHZhbHVlcyB8fCBbXSkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuXG4gICAgICAgIC8vIEFwcGx5IHBhcmVudCBkaXNhYmxlZCBzdGF0ZSwgYmVmb3JlIHRvIHB1c2ggaXQgaW50byB0aGUgYXJyYXlcbiAgICAgICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWQsIGFmdGVyIGNhbGxpbmcgQXBwRm9ybUFycmF5LnBhdGNoVmFsdWUoKSAoZS5nLiBpbiB0YWJsZSdzIHJvdyB2YWxpZGF0b3IpXG4gICAgICAgIGlmIChkaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pXG4gICAgICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pXG5cbiAgICAgICAgdGhpcy5wdXNoKGNvbnRyb2wsIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yZXNpemUodmFsdWVzPy5sZW5ndGggfHwgMCwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlcywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcGF0Y2hWYWx1ZSh2YWx1ZXM6IGFueVtdLCBvcHRpb25zPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd1JldXNlQ29udHJvbHMgPT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cbiAgICAgIC8vIENsZWFuIGFsbFxuICAgICAgdGhpcy5yZXNpemUoMCwge2VtaXRFdmVudDogb3B0aW9ucz8uZW1pdEV2ZW50fSk7XG5cbiAgICAgIC8vIFJlY3JlYXRlIGVhY2ggY29udHJvbCwgd2l0aCBhIGRlZmF1bHQgdmFsdWVcbiAgICAgICh2YWx1ZXMgfHwgW10pLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKHZhbHVlKTtcblxuICAgICAgICAvLyBBcHBseSBwYXJlbnQgZGlzYWJsZWQgc3RhdGUsIGJlZm9yZSB0byBwdXNoIGl0IGludG8gdGhlIGFycmF5XG4gICAgICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkLCBhZnRlciBjYWxsaW5nIEFwcEZvcm1BcnJheS5wYXRjaFZhbHVlKCkgKGUuZy4gaW4gdGFibGUncyByb3cgdmFsaWRhdG9yKVxuICAgICAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuICAgICAgICBlbHNlIGlmICghZGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuXG4gICAgICAgIHRoaXMucHVzaChjb250cm9sLCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucmVzaXplKHZhbHVlcz8ubGVuZ3RoIHx8IDAsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICBzdXBlci5wYXRjaFZhbHVlKHZhbHVlcywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplKGxlbmd0aDogbnVtYmVyLCBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KSB7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IGxlbmd0aCkgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXG5cbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7IC8vIFNhdmUgZW5hYmxlZCBoZXJlLCBiZWNhdXNlIHVwZGF0ZSBjYW4gb2NjdXIgZnJvbSByZXNpemVBcnJheSgpXG5cbiAgICAvLyBSZWR1Y2VcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQodGhpcy5sZW5ndGggLSAxLCB7ZW1pdEV2ZW50OiBvcHRpb25zPy5lbWl0RXZlbnR9KTtcbiAgICB9XG5cbiAgICAvLyBPciBpbmNyZWFzZSBzaXplXG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbGVuZ3RoKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKCk7XG5cbiAgICAgIC8vIEFwcGx5IHBhcmVudCBkaXNhYmxlZCBzdGF0ZSwgYmVmb3JlIHRvIHB1c2ggaXQgaW50byB0aGUgYXJyYXlcbiAgICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkLCBhZnRlciBjYWxsaW5nIEFwcEZvcm1BcnJheS5wYXRjaFZhbHVlKCkgKGUuZy4gaW4gdGFibGUncyByb3cgdmFsaWRhdG9yKVxuICAgICAgaWYgKGRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkgY29udHJvbC5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcbiAgICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICB0aGlzLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgc3VwZXIuZGlzYWJsZShvcHRzKTtcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmRpc2FibGUob3B0cykpO1xuICB9XG5cbiAgZW5hYmxlKG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBzdXBlci5lbmFibGUob3B0cyk7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5lbmFibGUob3B0cykpO1xuICB9XG5cbiAgZm9yRWFjaChpdGU6IChjb250cm9sOiBDKSA9PiB2b2lkICkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmxlbmd0aDtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5hdChpKSBhcyBDO1xuICAgICAgaWYgKGNvbnRyb2wpIGl0ZShjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBhZGQodmFsdWU/OiBULCBvcHRpb25zPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSkge1xuICAgIGFkZFZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmNyZWF0ZUNvbnRyb2wsIHRoaXMuZXF1YWxzLCB0aGlzLmlzRW1wdHksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUF0KGluZGV4OiBudW1iZXIsIG9wdGlvbnM/OiB7ZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICAvLyBEbyBub3QgcmVtb3ZlIGlmIGxhc3QgY3JpdGVyaW9uXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0VtcHR5QXJyYXkgPT09IGZhbHNlICYmIHRoaXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmNsZWFyQXQoaW5kZXgsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN1cGVyLnJlbW92ZUF0KGluZGV4LCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckF0KGluZGV4OiBudW1iZXIsIG9wdGlvbnM/OiB7ZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5hdChpbmRleCk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eShjb250cm9sLnZhbHVlKSkgcmV0dXJuOyAvLyBza2lwIChub3QgbmVlZCB0byBjbGVhcilcblxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgY29weUVudGl0eTJGb3JtKHt9LCBjb250cm9sLCBvcHRpb25zKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10sIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGlzTGFzdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuY29udHJvbHMuZmluZEluZGV4KGMgPT4gdGhpcy5pc0VtcHR5KGMudmFsdWUpKTtcbiAgICB3aGlsZShpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgaW5kZXggPSB0aGlzLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IHRoaXMuaXNFbXB0eShjLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gaW50ZXJuYWwgLS0gKi9cblxuICBwcm90ZWN0ZWQgc2V0QWxsb3dFbXB0eUFycmF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0VtcHR5QXJyYXkgPT09IHZhbHVlKSByZXR1cm47IC8vIFNraXAgaWYgc2FtZVxuXG4gICAgdGhpcy5vcHRpb25zLmFsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93RW1wdHlBcnJheSkge1xuICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRoaXMub3B0aW9ucy52YWxpZGF0b3JzIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLm9wdGlvbnM/LnZhbGlkYXRvcnMgfHwgW107XG4gICAgICB0aGlzLnNldFZhbGlkYXRvcnMoXG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbGlkYXRvcnMpID8gdmFsaWRhdG9ycyA6IFt2YWxpZGF0b3JzXSlcbiAgICAgICAgICAuY29uY2F0KFNoYXJlZEZvcm1BcnJheVZhbGlkYXRvcnMucmVxdWlyZWRBcnJheU1pbkxlbmd0aCgxKSkpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPIGNvbnRpbnVlIHRvIHVzZSB0aGlzIGtpbmQgb2YgZGVjbGFyYXRpb24gP1xuZXhwb3J0IGNsYXNzIEFwcEZvcm1VdGlscyB7XG4gIHN0YXRpYyBjb3B5RW50aXR5MkZvcm0gPSBjb3B5RW50aXR5MkZvcm07XG4gIHN0YXRpYyBnZXRGb3JtVmFsdWVGcm9tRW50aXR5ID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eTtcbiAgc3RhdGljIGxvZ0Zvcm1FcnJvcnMgPSBsb2dGb3JtRXJyb3JzO1xuICBzdGF0aWMgZ2V0Q29udHJvbEZyb21QYXRoID0gZ2V0Q29udHJvbEZyb21QYXRoO1xuICBzdGF0aWMgZmlsdGVyTnVtYmVySW5wdXQgPSBmaWx0ZXJOdW1iZXJJbnB1dDtcbiAgc3RhdGljIGRpc2FibGVDb250cm9scyA9IGRpc2FibGVDb250cm9scztcbiAgc3RhdGljIHNlbGVjdElucHV0Q29udGVudCA9IHNlbGVjdElucHV0Q29udGVudDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtYXJrQWxsQXNUb3VjaGVkKCkgaW5zdGVhZCAobmFtaW5nIHdhcyB3cm9uZylcbiAgICovXG4gIHN0YXRpYyBtYXJrQXNUb3VjaGVkID0gbWFya0FsbEFzVG91Y2hlZDtcblxuICAvKipcbiAgICogTWFya3MgdGhlIGNvbnRyb2wgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCBjb250cm9scyBhcyB0b3VjaGVkLlxuICAgKiBTZWUgYWxzbzpcbiAgICogLSBgbWFya0FzVG91Y2hlZCgpYFxuICAgKi9cbiAgc3RhdGljIG1hcmtBbGxBc1RvdWNoZWQgPSBtYXJrQWxsQXNUb3VjaGVkO1xuICBzdGF0aWMgbWFya0FzVW50b3VjaGVkID0gbWFya0FzVW50b3VjaGVkO1xuICBzdGF0aWMgd2FpdFdoaWxlUGVuZGluZyA9IHdhaXRXaGlsZVBlbmRpbmc7XG4gIHN0YXRpYyB3YWl0SWRsZSA9IHdhaXRJZGxlO1xuICBzdGF0aWMgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk7XG5cbiAgc3RhdGljIGdldEZvcm1FcnJvcnMgPSBnZXRGb3JtRXJyb3JzO1xuXG4gIHN0YXRpYyBpc0Zvcm0ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSUFwcEZvcm0ge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBBcHBGb3JtUHJvdmlkZXJcbiAgICAgIHx8ICdkaXJ0eScgaW4gb2JqZWN0ICYmICdlbmFibGVkJyBpbiBvYmplY3QgJiYgJ3ZhbGlkJyBpbiBvYmplY3Q7XG4gIH1cblxuICAvLyBBcnJheUZvcm1cbiAgc3RhdGljIGFkZFZhbHVlSW5BcnJheSA9IGFkZFZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlbW92ZVZhbHVlSW5BcnJheSA9IHJlbW92ZVZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlc2l6ZUFycmF5ID0gcmVzaXplQXJyYXk7XG4gIHN0YXRpYyBjbGVhclZhbHVlSW5BcnJheSA9IGNsZWFyVmFsdWVJbkFycmF5O1xuXG4gIC8vIENhbGN1bGF0ZWQgZmllbGRzXG4gIHN0YXRpYyBjYWxjdWxhdGVkU3VmZml4ID0gJ0NhbGN1bGF0ZWQnO1xuICBzdGF0aWMgaXNDb250cm9sSGFzSW5wdXQgPSBpc0NvbnRyb2xIYXNJbnB1dDtcbiAgc3RhdGljIHNldENhbGN1bGF0ZWRWYWx1ZSA9IHNldENhbGN1bGF0ZWRWYWx1ZTtcbiAgc3RhdGljIHJlc2V0Q2FsY3VsYXRlZFZhbHVlID0gcmVzZXRDYWxjdWxhdGVkVmFsdWU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gdHJ1ZSBpZiB0aGUgY29udHJvbCBoYXMgYSB2YWx1ZSBhbmQgaXRzICdjYWxjdWxhdGVkJyBjb250cm9sIGhhcyB0aGUgdmFsdWUgJ2ZhbHNlJ1xuICByZXR1cm4gY29udHJvbHNbY29udHJvbE5hbWVdLnZhbHVlICYmICF0b0Jvb2xlYW4oY29udHJvbHNbY29udHJvbE5hbWUgKyBBcHBGb3JtVXRpbHMuY2FsY3VsYXRlZFN1ZmZpeF0udmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENhbGN1bGF0ZWRWYWx1ZShjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gIC8vIHNldCB2YWx1ZSB0byBjb250cm9sXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lXS5zZXRWYWx1ZShyb3VuZCh2YWx1ZSkpO1xuICAvLyBzZXQgJ2NhbGN1bGF0ZWQnIGNvbnRyb2wgdG8gJ3RydWUnXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lICsgQXBwRm9ybVV0aWxzLmNhbGN1bGF0ZWRTdWZmaXhdLnNldFZhbHVlKHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYWxjdWxhdGVkVmFsdWUoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbE5hbWU6IHN0cmluZykge1xuICBpZiAoIWlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzLCBjb250cm9sTmFtZSkpIHtcbiAgICAvLyBzZXQgdW5kZWZpbmVkIG9ubHkgaWYgY29udHJvbCBhbHJlYWR5IGNhbGN1bGF0ZWRcbiAgICBBcHBGb3JtVXRpbHMuc2V0Q2FsY3VsYXRlZFZhbHVlKGNvbnRyb2xzLCBjb250cm9sTmFtZSwgdW5kZWZpbmVkKTtcbiAgfVxufVxuXG4iXX0=
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQyxnQkFBZ0IsRUFBc0IsZ0JBQWdCLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1SSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxPQUFPLEVBQWlCLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUF3QzVCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFBeEI7UUFDVyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBMEIzQixDQUFDO0lBekJDLElBQUksUUFBUTtRQUNW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QUFnQixHQUFHLFlBQVksQ0FBQztBQUNoQyw4QkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztBQUN0QywrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUN4QyxpQ0FBb0IsR0FBRyxvQkFBb0IsQ0FBQztBQUlyRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBMkMsRUFBRSxXQUFtQjtJQUNoRyxxRkFBcUY7SUFDckYsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZILENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBMkMsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQzVILHVCQUF1QjtJQUN2QixRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLHFDQUFxQztJQUNyQyxRQUFRLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQTJDLEVBQUUsV0FBbUI7SUFDbkcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUM3QyxtREFBbUQ7UUFDbkQsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDbkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEFic3RyYWN0Q29udHJvbE9wdGlvbnMsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RW50aXR5fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtyb3VuZCwgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7ZmlsdGVyTnVtYmVySW5wdXQsIHNlbGVjdElucHV0Q29udGVudH0gZnJvbSAnLi4vLi4vc2hhcmVkL2lucHV0cyc7XG5pbXBvcnQge3dhaXRGb3IsIFdhaXRGb3JPcHRpb25zfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtcbiAgYWRkVmFsdWVJbkFycmF5LFxuICBjbGVhclZhbHVlSW5BcnJheSxcbiAgY29weUVudGl0eTJGb3JtLFxuICBkaXNhYmxlQ29udHJvbHMsXG4gIGdldENvbnRyb2xGcm9tUGF0aCxcbiAgZ2V0Rm9ybUVycm9ycyxcbiAgZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eSxcbiAgbG9nRm9ybUVycm9ycyxcbiAgbWFya0FsbEFzVG91Y2hlZCxcbiAgbWFya0FzVW50b3VjaGVkLFxuICByZW1vdmVWYWx1ZUluQXJyYXksXG4gIHJlc2l6ZUFycmF5LFxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5LFxuICB3YWl0SWRsZSxcbiAgd2FpdFdoaWxlUGVuZGluZ1xufSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIElBcHBGb3JtR2V0dGVyID0gKCkgPT4gSUFwcEZvcm07XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBPblJlYWR5IHtcbiAgbmdPblJlYWR5KCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEZvcm0gIHtcbiAgLy8gRnJvbSBBbmd1bGFyIGZvcm1cbiAgaW52YWxpZDogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIGRpcnR5OiBib29sZWFuO1xuICBwZW5kaW5nOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdG91Y2hlZDogYm9vbGVhbjtcbiAgdW50b3VjaGVkOiBib29sZWFuO1xuXG4gIC8vIFNwZWNpZmljIHRvIElBcHBGb3JtXG4gIGVtcHR5PzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHJlYWR5KCk6IFByb21pc2U8dm9pZD47XG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8YW55PjtcblxuICBkaXNhYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG5cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTtcbiAgbWFya0FzRGlydHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc0xvYWRlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzUmVhZHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG59XG5cblxuLyoqXG4gKiBBIGZvcm0gdGhhdCBkbyBub3RoaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBOdWxsRm9ybSBpbXBsZW1lbnRzIElBcHBGb3JtIHtcbiAgcmVhZG9ubHkgaW52YWxpZCA9IGZhbHNlO1xuICByZWFkb25seSB2YWxpZCA9IGZhbHNlO1xuICByZWFkb25seSBkaXJ0eSA9IGZhbHNlO1xuICByZWFkb25seSBlbXB0eSA9IHRydWU7XG4gIHJlYWRvbmx5IHBlbmRpbmcgPSBmYWxzZTtcbiAgcmVhZG9ubHkgZXJyb3IgPSBudWxsO1xuICByZWFkb25seSBlbmFibGVkID0gZmFsc2U7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBmYWxzZTtcbiAgcmVhZG9ubHkgdG91Y2hlZCA9IGZhbHNlO1xuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmVuYWJsZWQ7XG4gIH1cbiAgZ2V0IHVudG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudG91Y2hlZDtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBbGxBc1RvdWNoZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7fVxuICBtYXJrQXNEaXJ0eShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNMb2FkZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNSZWFkeShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG5cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZmFsc2UpO1xuICB9XG4gIHJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRydWUpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcEZvcm1Qcm92aWRlcjxGIGV4dGVuZHMgSUFwcEZvcm0gPSBJQXBwRm9ybT4gaW1wbGVtZW50cyBJQXBwRm9ybSB7XG4gIHN0YXRpYyBOVUxMX0ZPUk0gPSBuZXcgQXBwTnVsbEZvcm0oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdldHRlckZuOiAoKSA9PiBGKSB7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZWxlZ2F0ZSgpOiBJQXBwRm9ybSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0dGVyRm4oKSB8fCBBcHBGb3JtUHJvdmlkZXIuTlVMTF9GT1JNO1xuICB9XG5cbiAgd2FpdERlbGVnYXRlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8Rj4ge1xuICAgIGxldCBjb250ZW50OiBGO1xuICAgIHJldHVybiB3YWl0Rm9yKCgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLmdldHRlckZuKCk7XG4gICAgICByZXR1cm4gISFjb250ZW50O1xuICAgIH0sIG9wdHMpLnRoZW4oXyA9PiBjb250ZW50KTtcbiAgfVxuXG4gIC8qIC0tIGRlbGVnYXRlZCBtZXRob2RzIC0tICovXG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZW5hYmxlZDtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZGlzYWJsZWQ7XG4gIH1cbiAgZ2V0IGVycm9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZXJyb3I7XG4gIH1cbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuaW52YWxpZDtcbiAgfVxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudmFsaWQ7XG4gIH1cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpcnR5O1xuICB9XG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbXB0eTtcbiAgfVxuICBnZXQgcGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wZW5kaW5nO1xuICB9XG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmxvYWRpbmc7XG4gIH1cbiAgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudG91Y2hlZDtcbiAgfVxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnVudG91Y2hlZDtcbiAgfVxuICByZWFkeSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnJlYWR5KCk7XG4gIH1cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS53YWl0SWRsZSgpO1xuICB9XG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpc2FibGUob3B0cyk7XG4gIH1cbiAgZW5hYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbmFibGUob3B0cyk7XG4gIH1cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1ByaXN0aW5lKG9wdHMpO1xuICB9XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIH1cbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQWxsQXNUb3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc0RpcnR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNEaXJ0eShvcHRzKTtcbiAgfVxuICBtYXJrQXNMb2FkaW5nKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzTG9hZGluZyhvcHRzKTtcbiAgfVxuICBtYXJrQXNMb2FkZWQob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNMb2FkZWQob3B0cyk7XG4gIH1cbiAgbWFya0FzUmVhZHkob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNSZWFkeShvcHRzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1BcnJheUhlbHBlck9wdGlvbnMge1xuICBhbGxvd0VtcHR5QXJyYXk6IGJvb2xlYW47IC8vIGZhbHNlIGJ5IGRlZmF1bHRcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtQXJyYXlIZWxwZXI8VCA9IEVudGl0eTxhbnk+LCBDIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sID0gQWJzdHJhY3RDb250cm9sPiB7XG5cbiAgc3RhdGljIGdldE9yQ3JlYXRlQXJyYXkoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIGFycmF5TmFtZTogc3RyaW5nKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBmb3JtLmRpc2FibGVkO1xuICAgIGxldCBhcnJheUNvbnRyb2wgPSBmb3JtLmdldChhcnJheU5hbWUpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgaWYgKCFhcnJheUNvbnRyb2wpIHtcbiAgICAgIGFycmF5Q29udHJvbCA9IGZvcm1CdWlsZGVyLmFycmF5KFtdKTtcblxuICAgICAgLy8gQXBwbHkgcGFyZW50IGRpc2FibGVkIHN0YXRlLCBiZWZvcmUgdG8gcHVzaCBpdCBpbnRvIHRoZSBhcnJheVxuICAgICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWQsIGFmdGVyIGNhbGxpbmcgcmVzaXplQXJyYXkoKVxuICAgICAgaWYgKGRpc2FibGVkICYmIGFycmF5Q29udHJvbC5lbmFibGVkKSBhcnJheUNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICBmb3JtLmFkZENvbnRyb2woYXJyYXlOYW1lLCBhcnJheUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlDb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWxsb3dFbXB0eUFycmF5OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuXG4gIGdldCBhbGxvd0VtcHR5QXJyYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93RW1wdHlBcnJheTtcbiAgfVxuXG4gIHNldCBhbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZm9ybUFycmF5KCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtQXJyYXk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgcHJpdmF0ZSBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBUKSA9PiBDLFxuICAgIHByaXZhdGUgZXF1YWxzOiAodjE6IFQsIHYyOiBUKSA9PiBib29sZWFuLFxuICAgIHByaXZhdGUgaXNFbXB0eTogKHZhbHVlOiBUKSA9PiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiBGb3JtQXJyYXlIZWxwZXJPcHRpb25zXG4gICkge1xuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSBvcHRpb25zICYmIG9wdGlvbnMudmFsaWRhdG9ycztcblxuICAgIC8vIGVtcHR5IGFycmF5IG5vdCBhbGxvdyBieSBkZWZhdWx0XG4gICAgdGhpcy5zZXRBbGxvd0VtcHR5QXJyYXkodG9Cb29sZWFuKG9wdGlvbnM/LmFsbG93RW1wdHlBcnJheSwgZmFsc2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGFkZCh2YWx1ZT86IFQsIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFkZFZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuY3JlYXRlQ29udHJvbCwgdGhpcy5lcXVhbHMsIHRoaXMuaXNFbXB0eSwgdmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcikge1xuICAgIC8vIERvIG5vdCByZW1vdmUgaWYgbGFzdCBjcml0ZXJpb25cbiAgICBpZiAoIXRoaXMuX2FsbG93RW1wdHlBcnJheSAmJiB0aGlzLl9mb3JtQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVtb3ZlVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplKGxlbmd0aDogbnVtYmVyLCBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc2l6ZUFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5jcmVhdGVDb250cm9sLCBsZW5ndGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgY2xlYXJBdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNsZWFyVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gIH1cblxuICBpc0xhc3QoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fZm9ybUFycmF5Lmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIHdoaWxlKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCk7XG4gICAgICBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5Lmxlbmd0aDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBDIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5LmF0KGluZGV4KSBhcyBDO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2l6ZSB0aGUgRm9ybUFycmF5LCB0aGVuIHNldCB2YWx1ZXNcbiAgICogQHBhcmFtIHZhbHVlc1xuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgc2V0VmFsdWUodmFsdWVzOiBUW10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZSh2YWx1ZXM/Lmxlbmd0aHx8MCk7XG4gICAgdGhpcy5fZm9ybUFycmF5LnNldFZhbHVlKHZhbHVlcywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzaXplIHRoZSBGb3JtQXJyYXksIHRoZW4gcGF0Y2ggdmFsdWVzXG4gICAqIEBwYXJhbSB2YWx1ZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHBhdGNoVmFsdWUodmFsdWVzOiBUW10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZSh2YWx1ZXM/Lmxlbmd0aHx8MCk7XG4gICAgdGhpcy5fZm9ybUFycmF5LnBhdGNoVmFsdWUodmFsdWVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5kaXNhYmxlKG9wdHMpKTtcbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmVuYWJsZShvcHRzKSk7XG4gIH1cblxuICBmb3JFYWNoKGl0ZTogKGNvbnRyb2w6IEMpID0+IHZvaWQgKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZSgpO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mb3JtQXJyYXkuYXQoaSkgYXMgQztcbiAgICAgIGlmIChjb250cm9sKSBpdGUoY29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gaW50ZXJuYWwgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXRBbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5ID09PSB2YWx1ZSkgcmV0dXJuOyAvLyBTa2lwIGlmIHNhbWVcblxuICAgIHRoaXMuX2FsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5KSB7XG4gICAgICB0aGlzLl9mb3JtQXJyYXkuc2V0VmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Zvcm1BcnJheS5zZXRWYWxpZGF0b3JzKCh0aGlzLl92YWxpZGF0b3JzIHx8IFtdKS5jb25jYXQoU2hhcmVkRm9ybUFycmF5VmFsaWRhdG9ycy5yZXF1aXJlZEFycmF5TWluTGVuZ3RoKDEpKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBcHBGb3JtQXJyYXlPcHRpb25zIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB7XG4gIGFsbG93RW1wdHlBcnJheT86IGJvb2xlYW47IC8vIHRydWUgYnkgZGVmYXVsdFxuICBhbGxvd1JldXNlQ29udHJvbHM/OiBib29sZWFuOyAvLyB0cnVlIGJ5IGRlZmF1bHRcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEZvcm1BcnJheTxUIGV4dGVuZHMgRW50aXR5PFQ+LCBDIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPiBleHRlbmRzIFVudHlwZWRGb3JtQXJyYXkge1xuXG4gIHByaXZhdGUgb3B0aW9ucz86IEFwcEZvcm1BcnJheU9wdGlvbnNcblxuICBnZXQgYWxsb3dFbXB0eUFycmF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYWxsb3dFbXB0eUFycmF5O1xuICB9XG5cbiAgc2V0IGFsbG93RW1wdHlBcnJheSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0QWxsb3dFbXB0eUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogVCkgPT4gQyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlcXVhbHM6ICh2MTogVCwgdjI6IFQpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHByaXZhdGUgaXNFbXB0eTogKHZhbHVlOiBUKSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICBvcHRpb25zPzogQXBwRm9ybUFycmF5T3B0aW9ucyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIoW10sIG9wdGlvbnMpOy8vIGVtcHR5IGFycmF5IG5vdCBhbGxvdyBieSBkZWZhdWx0XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgYWxsb3dFbXB0eUFycmF5OiB0cnVlLFxuICAgICAgYWxsb3dSZXVzZUNvbnRyb2xzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH1cbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh0aGlzLm9wdGlvbnMuYWxsb3dFbXB0eUFycmF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXSWxsIHJlYnVpbGQgdGhlIGFycmF5LCB1c2luZyB0aGUgZ2l2ZW4gdmFsdWVzXG4gICAqIEBwYXJhbSB2YWx1ZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHNldFZhbHVlKHZhbHVlczogYW55W10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICBpZiAodmFsdWVzID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcignXFwndW5kZWZpbmVkXFwnIHZhbHVlIG5vdCBhbGxvd2VkIGluIEFwcEZvcm1BcnJheS5zZXRWYWx1ZSgpJyk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93UmV1c2VDb250cm9scyA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcblxuICAgICAgLy8gQ2xlYW4gYWxsXG4gICAgICB0aGlzLnJlc2l6ZSgwLCB7ZW1pdEV2ZW50OiBvcHRpb25zPy5lbWl0RXZlbnR9KTtcblxuICAgICAgLy8gUmVjcmVhdGUgZWFjaCBjb250cm9sLCB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAgKHZhbHVlcyB8fCBbXSkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuXG4gICAgICAgIC8vIEFwcGx5IHBhcmVudCBkaXNhYmxlZCBzdGF0ZSwgYmVmb3JlIHRvIHB1c2ggaXQgaW50byB0aGUgYXJyYXlcbiAgICAgICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWQsIGFmdGVyIGNhbGxpbmcgQXBwRm9ybUFycmF5LnBhdGNoVmFsdWUoKSAoZS5nLiBpbiB0YWJsZSdzIHJvdyB2YWxpZGF0b3IpXG4gICAgICAgIGlmIChkaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pXG4gICAgICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pXG5cbiAgICAgICAgdGhpcy5wdXNoKGNvbnRyb2wsIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5yZXNpemUodmFsdWVzPy5sZW5ndGggfHwgMCwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlcywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcGF0Y2hWYWx1ZSh2YWx1ZXM6IGFueVtdfG51bGx8dW5kZWZpbmVkLCBvcHRpb25zPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogdm9pZCB7XG4gICAgLy8gLyFcXCBGcm9tIHRoZSBvZmZpY2lhbCBBbmd1bGFyICdGb3JtR3JvdXAucGF0Y2hWYWx1ZSgpJyA6XG4gICAgLy8gICAgIFwiRXZlbiB0aG91Z2ggdGhlIGB2YWx1ZWAgYXJndW1lbnQgdHlwZSBkb2Vzbid0IGFsbG93IGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLCB0aGVcbiAgICAvLyAgICAgYHBhdGNoVmFsdWVgIGNhbiBiZSBjYWxsZWQgcmVjdXJzaXZlbHkgYW5kIGlubmVyIGRhdGEgc3RydWN0dXJlcyBtaWdodCBoYXZlIHRoZXNlIHZhbHVlcywgc29cbiAgICAvLyAgICAgd2UganVzdCBpZ25vcmUgc3VjaCBjYXNlcyB3aGVuIGEgZmllbGQgY29udGFpbmluZyBGb3JtR3JvdXAgaW5zdGFuY2UgcmVjZWl2ZXMgYG51bGxgIG9yXG4gICAgLy8gICAgIGB1bmRlZmluZWRgIGFzIGEgdmFsdWUuXCJcbiAgICAvLyBCVVQgaW4gQXBwRm9ybUFycmF5LCB3ZSBvbmx5IGlnbm9yZSB0aGUgYHVuZGVmaW5lZGAgdmFsdWUsIHNvIGBudWxsYCB2YWx1ZSB3aWxsIHJlc2V0IHRoZSBhcnJheSAoemVybyBsZW5ndGgpLlxuICAgIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd1JldXNlQ29udHJvbHMgPT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cbiAgICAgIC8vIENsZWFuIGFsbFxuICAgICAgdGhpcy5yZXNpemUoMCwge2VtaXRFdmVudDogb3B0aW9ucz8uZW1pdEV2ZW50fSk7XG5cbiAgICAgIC8vIFJlY3JlYXRlIGVhY2ggY29udHJvbCwgd2l0aCBhIGRlZmF1bHQgdmFsdWVcbiAgICAgICh2YWx1ZXMgfHwgW10pLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKHZhbHVlKTtcblxuICAgICAgICAvLyBBcHBseSBwYXJlbnQgZGlzYWJsZWQgc3RhdGUsIGJlZm9yZSB0byBwdXNoIGl0IGludG8gdGhlIGFycmF5XG4gICAgICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkLCBhZnRlciBjYWxsaW5nIEFwcEZvcm1BcnJheS5wYXRjaFZhbHVlKCkgKGUuZy4gaW4gdGFibGUncyByb3cgdmFsaWRhdG9yKVxuICAgICAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuICAgICAgICBlbHNlIGlmICghZGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuXG4gICAgICAgIHRoaXMucHVzaChjb250cm9sLCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucmVzaXplKHZhbHVlcz8ubGVuZ3RoIHx8IDAsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICBzdXBlci5wYXRjaFZhbHVlKHZhbHVlcywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplKGxlbmd0aDogbnVtYmVyLCBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KSB7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IGxlbmd0aCkgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXG5cbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7IC8vIFNhdmUgZW5hYmxlZCBoZXJlLCBiZWNhdXNlIHVwZGF0ZSBjYW4gb2NjdXIgZnJvbSByZXNpemVBcnJheSgpXG5cbiAgICAvLyBSZWR1Y2VcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQodGhpcy5sZW5ndGggLSAxLCB7ZW1pdEV2ZW50OiBvcHRpb25zPy5lbWl0RXZlbnR9KTtcbiAgICB9XG5cbiAgICAvLyBPciBpbmNyZWFzZSBzaXplXG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbGVuZ3RoKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sKCk7XG5cbiAgICAgIC8vIEFwcGx5IHBhcmVudCBkaXNhYmxlZCBzdGF0ZSwgYmVmb3JlIHRvIHB1c2ggaXQgaW50byB0aGUgYXJyYXlcbiAgICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkLCBhZnRlciBjYWxsaW5nIEFwcEZvcm1BcnJheS5wYXRjaFZhbHVlKCkgKGUuZy4gaW4gdGFibGUncyByb3cgdmFsaWRhdG9yKVxuICAgICAgaWYgKGRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkgY29udHJvbC5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcbiAgICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICB0aGlzLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgc3VwZXIuZGlzYWJsZShvcHRzKTtcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmRpc2FibGUob3B0cykpO1xuICB9XG5cbiAgZW5hYmxlKG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBzdXBlci5lbmFibGUob3B0cyk7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5lbmFibGUob3B0cykpO1xuICB9XG5cbiAgZm9yRWFjaChpdGU6IChjb250cm9sOiBDKSA9PiB2b2lkICkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmxlbmd0aDtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5hdChpKSBhcyBDO1xuICAgICAgaWYgKGNvbnRyb2wpIGl0ZShjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBhZGQodmFsdWU/OiBULCBvcHRpb25zPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSkge1xuICAgIGFkZFZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmNyZWF0ZUNvbnRyb2wsIHRoaXMuZXF1YWxzLCB0aGlzLmlzRW1wdHksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUF0KGluZGV4OiBudW1iZXIsIG9wdGlvbnM/OiB7ZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICAvLyBEbyBub3QgcmVtb3ZlIGlmIGxhc3QgY3JpdGVyaW9uXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0VtcHR5QXJyYXkgPT09IGZhbHNlICYmIHRoaXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmNsZWFyQXQoaW5kZXgsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN1cGVyLnJlbW92ZUF0KGluZGV4LCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckF0KGluZGV4OiBudW1iZXIsIG9wdGlvbnM/OiB7ZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5hdChpbmRleCk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eShjb250cm9sLnZhbHVlKSkgcmV0dXJuOyAvLyBza2lwIChub3QgbmVlZCB0byBjbGVhcilcblxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgY29weUVudGl0eTJGb3JtKHt9LCBjb250cm9sLCBvcHRpb25zKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10sIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGlzTGFzdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuY29udHJvbHMuZmluZEluZGV4KGMgPT4gdGhpcy5pc0VtcHR5KGMudmFsdWUpKTtcbiAgICB3aGlsZShpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgaW5kZXggPSB0aGlzLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IHRoaXMuaXNFbXB0eShjLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gaW50ZXJuYWwgLS0gKi9cblxuICBwcm90ZWN0ZWQgc2V0QWxsb3dFbXB0eUFycmF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0VtcHR5QXJyYXkgPT09IHZhbHVlKSByZXR1cm47IC8vIFNraXAgaWYgc2FtZVxuXG4gICAgdGhpcy5vcHRpb25zLmFsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93RW1wdHlBcnJheSkge1xuICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRoaXMub3B0aW9ucy52YWxpZGF0b3JzIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLm9wdGlvbnM/LnZhbGlkYXRvcnMgfHwgW107XG4gICAgICB0aGlzLnNldFZhbGlkYXRvcnMoXG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbGlkYXRvcnMpID8gdmFsaWRhdG9ycyA6IFt2YWxpZGF0b3JzXSlcbiAgICAgICAgICAuY29uY2F0KFNoYXJlZEZvcm1BcnJheVZhbGlkYXRvcnMucmVxdWlyZWRBcnJheU1pbkxlbmd0aCgxKSkpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPIGNvbnRpbnVlIHRvIHVzZSB0aGlzIGtpbmQgb2YgZGVjbGFyYXRpb24gP1xuZXhwb3J0IGNsYXNzIEFwcEZvcm1VdGlscyB7XG4gIHN0YXRpYyBjb3B5RW50aXR5MkZvcm0gPSBjb3B5RW50aXR5MkZvcm07XG4gIHN0YXRpYyBnZXRGb3JtVmFsdWVGcm9tRW50aXR5ID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eTtcbiAgc3RhdGljIGxvZ0Zvcm1FcnJvcnMgPSBsb2dGb3JtRXJyb3JzO1xuICBzdGF0aWMgZ2V0Q29udHJvbEZyb21QYXRoID0gZ2V0Q29udHJvbEZyb21QYXRoO1xuICBzdGF0aWMgZmlsdGVyTnVtYmVySW5wdXQgPSBmaWx0ZXJOdW1iZXJJbnB1dDtcbiAgc3RhdGljIGRpc2FibGVDb250cm9scyA9IGRpc2FibGVDb250cm9scztcbiAgc3RhdGljIHNlbGVjdElucHV0Q29udGVudCA9IHNlbGVjdElucHV0Q29udGVudDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtYXJrQWxsQXNUb3VjaGVkKCkgaW5zdGVhZCAobmFtaW5nIHdhcyB3cm9uZylcbiAgICovXG4gIHN0YXRpYyBtYXJrQXNUb3VjaGVkID0gbWFya0FsbEFzVG91Y2hlZDtcblxuICAvKipcbiAgICogTWFya3MgdGhlIGNvbnRyb2wgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCBjb250cm9scyBhcyB0b3VjaGVkLlxuICAgKiBTZWUgYWxzbzpcbiAgICogLSBgbWFya0FzVG91Y2hlZCgpYFxuICAgKi9cbiAgc3RhdGljIG1hcmtBbGxBc1RvdWNoZWQgPSBtYXJrQWxsQXNUb3VjaGVkO1xuICBzdGF0aWMgbWFya0FzVW50b3VjaGVkID0gbWFya0FzVW50b3VjaGVkO1xuICBzdGF0aWMgd2FpdFdoaWxlUGVuZGluZyA9IHdhaXRXaGlsZVBlbmRpbmc7XG4gIHN0YXRpYyB3YWl0SWRsZSA9IHdhaXRJZGxlO1xuICBzdGF0aWMgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk7XG5cbiAgc3RhdGljIGdldEZvcm1FcnJvcnMgPSBnZXRGb3JtRXJyb3JzO1xuXG4gIHN0YXRpYyBpc0Zvcm0ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSUFwcEZvcm0ge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBBcHBGb3JtUHJvdmlkZXJcbiAgICAgIHx8ICdkaXJ0eScgaW4gb2JqZWN0ICYmICdlbmFibGVkJyBpbiBvYmplY3QgJiYgJ3ZhbGlkJyBpbiBvYmplY3Q7XG4gIH1cblxuICAvLyBBcnJheUZvcm1cbiAgc3RhdGljIGFkZFZhbHVlSW5BcnJheSA9IGFkZFZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlbW92ZVZhbHVlSW5BcnJheSA9IHJlbW92ZVZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlc2l6ZUFycmF5ID0gcmVzaXplQXJyYXk7XG4gIHN0YXRpYyBjbGVhclZhbHVlSW5BcnJheSA9IGNsZWFyVmFsdWVJbkFycmF5O1xuXG4gIC8vIENhbGN1bGF0ZWQgZmllbGRzXG4gIHN0YXRpYyBjYWxjdWxhdGVkU3VmZml4ID0gJ0NhbGN1bGF0ZWQnO1xuICBzdGF0aWMgaXNDb250cm9sSGFzSW5wdXQgPSBpc0NvbnRyb2xIYXNJbnB1dDtcbiAgc3RhdGljIHNldENhbGN1bGF0ZWRWYWx1ZSA9IHNldENhbGN1bGF0ZWRWYWx1ZTtcbiAgc3RhdGljIHJlc2V0Q2FsY3VsYXRlZFZhbHVlID0gcmVzZXRDYWxjdWxhdGVkVmFsdWU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gdHJ1ZSBpZiB0aGUgY29udHJvbCBoYXMgYSB2YWx1ZSBhbmQgaXRzICdjYWxjdWxhdGVkJyBjb250cm9sIGhhcyB0aGUgdmFsdWUgJ2ZhbHNlJ1xuICByZXR1cm4gY29udHJvbHNbY29udHJvbE5hbWVdLnZhbHVlICYmICF0b0Jvb2xlYW4oY29udHJvbHNbY29udHJvbE5hbWUgKyBBcHBGb3JtVXRpbHMuY2FsY3VsYXRlZFN1ZmZpeF0udmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENhbGN1bGF0ZWRWYWx1ZShjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gIC8vIHNldCB2YWx1ZSB0byBjb250cm9sXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lXS5zZXRWYWx1ZShyb3VuZCh2YWx1ZSkpO1xuICAvLyBzZXQgJ2NhbGN1bGF0ZWQnIGNvbnRyb2wgdG8gJ3RydWUnXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lICsgQXBwRm9ybVV0aWxzLmNhbGN1bGF0ZWRTdWZmaXhdLnNldFZhbHVlKHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYWxjdWxhdGVkVmFsdWUoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbE5hbWU6IHN0cmluZykge1xuICBpZiAoIWlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzLCBjb250cm9sTmFtZSkpIHtcbiAgICAvLyBzZXQgdW5kZWZpbmVkIG9ubHkgaWYgY29udHJvbCBhbHJlYWR5IGNhbGN1bGF0ZWRcbiAgICBBcHBGb3JtVXRpbHMuc2V0Q2FsY3VsYXRlZFZhbHVlKGNvbnRyb2xzLCBjb250cm9sTmFtZSwgdW5kZWZpbmVkKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -56,10 +56,10 @@ export class TextForm extends AppForm {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
TextForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TextForm, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
-
TextForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TextForm, selector: "app-text-form", inputs: { showError: "showError", placeholder: "placeholder", multiline: "multiline", autoHeight: "autoHeight", maxLength: "maxLength", autofocus: "autofocus", validator: "validator" }, outputs: { textAreaChanges: "textAreaChanges" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "autosizeDirective", first: true, predicate: CdkTextareaAutosize, descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"
|
|
59
|
+
TextForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TextForm, selector: "app-text-form", inputs: { showError: "showError", placeholder: "placeholder", multiline: "multiline", autoHeight: "autoHeight", maxLength: "maxLength", autofocus: "autofocus", validator: "validator" }, outputs: { textAreaChanges: "textAreaChanges" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "autosizeDirective", first: true, predicate: CdkTextareaAutosize, descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit.emit($event)\">\n <mat-form-field *ngIf=\"multiline; else monoline\">\n <textarea\n #textArea\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"control.disabled\"\n [class.fixed-height]=\"!autoHeight\"\n [cdkTextareaAutosize]=\"autoHeight\"\n (keyup)=\"textAreaChanged($event)\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n [autofocus]=\"autofocus\"\n ></textarea>\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textArea.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n <ng-template #monoline>\n <mat-form-field>\n <input\n #textInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"autofocus\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n />\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-error *ngIf=\"control.hasError('pattern')\">\n {{ 'ERROR.FIELD_INVALID' | translate }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textInput.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n </ng-template>\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
60
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TextForm, decorators: [{
|
|
61
61
|
type: Component,
|
|
62
|
-
args: [{ selector: 'app-text-form', template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"
|
|
62
|
+
args: [{ selector: 'app-text-form', template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit.emit($event)\">\n <mat-form-field *ngIf=\"multiline; else monoline\">\n <textarea\n #textArea\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"control.disabled\"\n [class.fixed-height]=\"!autoHeight\"\n [cdkTextareaAutosize]=\"autoHeight\"\n (keyup)=\"textAreaChanged($event)\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n [autofocus]=\"autofocus\"\n ></textarea>\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textArea.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n <ng-template #monoline>\n <mat-form-field>\n <input\n #textInput\n matInput\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"autofocus\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n />\n <mat-error *ngIf=\"control.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: control.errors['maxlength'] }}\n </mat-error>\n <mat-error *ngIf=\"control.hasError('pattern')\">\n {{ 'ERROR.FIELD_INVALID' | translate }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textInput.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n </ng-template>\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}\n"] }]
|
|
63
63
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.UntypedFormBuilder }]; }, propDecorators: { showError: [{
|
|
64
64
|
type: Input
|
|
65
65
|
}], placeholder: [{
|
|
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
86
86
|
type: ViewChild,
|
|
87
87
|
args: [CdkTextareaAutosize]
|
|
88
88
|
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3RleHQtcG9wb3Zlci90ZXh0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vdGV4dC1wb3BvdmVyL3RleHQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBYyxZQUFZLEVBQVksS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFzRCxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQXVCO0lBaUJuRCxZQUFzQixRQUFrQixFQUFZLEVBQXFCLEVBQVksV0FBK0I7UUFDbEgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREksYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFZLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVksZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBaEIzRyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFnQixJQUFJLENBQUM7UUFFN0Isb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBVXZELENBQUM7SUFFRCxRQUFRO1FBQ04scUJBQXFCO1FBQ3JCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hILElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRCxrQkFBa0I7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDbEMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN4RSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUF1QixDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBb0I7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7c0dBbkRVLFFBQVE7MEZBQVIsUUFBUSxtZ0JBYVIsbUJBQW1CLHVFQ3pCaEMsdXJEQTRDQTs0RkRoQ2EsUUFBUTtrQkFMcEIsU0FBUzsrQkFDRSxlQUFlO2dLQUtoQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRWdCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRyxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1UsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q2RrVGV4dGFyZWFBdXRvc2l6ZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHtBcHBGb3JtfSBmcm9tICcuLi9mb3JtLmNsYXNzJztcbmltcG9ydCB7aXNOb3ROaWx9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtmb2N1c0lucHV0fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW5wdXRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRleHQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dEZvcm0gZXh0ZW5kcyBBcHBGb3JtPHt0ZXh0OiBzdHJpbmd9PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNob3dFcnJvciA9IHRydWU7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG11bHRpbGluZSA9IHRydWU7XG4gIEBJbnB1dCgpIGF1dG9IZWlnaHQgPSBmYWxzZTtcbiAgQElucHV0KCkgbWF4TGVuZ3RoID0gMjAwMDtcbiAgQElucHV0KCkgYXV0b2ZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBudWxsO1xuXG4gIEBPdXRwdXQoKSB0ZXh0QXJlYUNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCd0ZXh0QXJlYScpIHRleHRBcmVhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnKSB0ZXh0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVGV4dGFyZWFBdXRvc2l6ZSkgYXV0b3NpemVEaXJlY3RpdmU6IENka1RleHRhcmVhQXV0b3NpemU7XG5cbiAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQ29tcHV0ZSB2YWxpZGF0b3JzXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IGlzTm90TmlsKHRoaXMubWF4TGVuZ3RoKSAmJiB0aGlzLm1heExlbmd0aCA+IDAgPyBbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpXSA6IFtdO1xuICAgIGlmICh0aGlzLnZhbGlkYXRvcikgdmFsaWRhdG9ycy5wdXNoKHRoaXMudmFsaWRhdG9yKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgZm9ybVxuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHRleHQ6IFtudWxsLCB2YWxpZGF0b3JzLmxlbmd0aCA/IFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKSA6IG51bGxdXG4gICAgfSk7XG4gICAgdGhpcy5jb250cm9sID0gZm9ybS5nZXQoJ3RleHQnKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgdGhpcy5zZXRGb3JtKGZvcm0pO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKVxuICB9XG5cbiAgdGV4dEFyZWFDaGFuZ2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy50ZXh0QXJlYUNoYW5nZXMuZW1pdCh0aGlzLmNvbnRyb2wudmFsdWUpO1xuICB9XG5cbiAgY29udGFpbmVyUmVzaXplKCkge1xuICAgIHRoaXMuYXV0b3NpemVEaXJlY3RpdmU/LnJlc2l6ZVRvRml0Q29udGVudCh0cnVlKTtcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMudGV4dEFyZWEpIGZvY3VzSW5wdXQodGhpcy50ZXh0QXJlYSk7XG4gICAgaWYgKHRoaXMudGV4dElucHV0KSBmb2N1c0lucHV0KHRoaXMudGV4dElucHV0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5lbWl0KCRldmVudClcIj5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibXVsdGlsaW5lOyBlbHNlIG1vbm9saW5lXCI+XG4gICAgPHRleHRhcmVhXG4gICAgICAjdGV4dEFyZWFcbiAgICAgIG1hdElucHV0XG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW3JlYWRvbmx5XT1cImNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLmZpeGVkLWhlaWdodF09XCIhYXV0b0hlaWdodFwiXG4gICAgICBbY2RrVGV4dGFyZWFBdXRvc2l6ZV09XCJhdXRvSGVpZ2h0XCJcbiAgICAgIChrZXl1cCk9XCJ0ZXh0QXJlYUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5jb250cm9sLmVudGVyKT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiXG4gICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgPjwvdGV4dGFyZWE+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICB7eyAnRVJST1IuRklFTERfTUFYX0xFTkdUSCcgfCB0cmFuc2xhdGU6IGNvbnRyb2wuZXJyb3JzWydtYXhsZW5ndGgnXSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtaGludCAqbmdJZj1cIm1heExlbmd0aFwiIGFsaWduPVwiZW5kXCI+XG4gICAgICB7eyAnSU5GTy5URVhUX1BST0dSRVNTJyB8IHRyYW5zbGF0ZTogeyBjdXJyZW50OiB0ZXh0QXJlYS52YWx1ZT8ubGVuZ3RoIHx8IDAsIG1heDogbWF4TGVuZ3RoIH0gfX1cbiAgICA8L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bmctdGVtcGxhdGUgI21vbm9saW5lPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjdGV4dElucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCJcbiAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAoa2V5ZG93bi5jb250cm9sLmVudGVyKT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICAgIHt7ICdFUlJPUi5GSUVMRF9NQVhfTEVOR1RIJyB8IHRyYW5zbGF0ZTogY29udHJvbC5lcnJvcnNbJ21heGxlbmd0aCddIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgICAge3sgJ0VSUk9SLkZJRUxEX0lOVkFMSUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIm1heExlbmd0aFwiIGFsaWduPVwiZW5kXCI+XG4gICAgICAgIHt7ICdJTkZPLlRFWFRfUFJPR1JFU1MnIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IHRleHRJbnB1dC52YWx1ZT8ubGVuZ3RoIHx8IDAsIG1heDogbWF4TGVuZ3RoIH0gfX1cbiAgICAgIDwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZm9ybT5cbiJdfQ==
|