@po-ui/ng-templates 17.18.1 → 18.0.0-next.0
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/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +1 -1
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +2 -2
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +69 -69
- package/esm2022/lib/components/po-page-background/po-page-background.component.mjs +15 -15
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +8 -8
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +2 -2
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +2 -2
- package/esm2022/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.component.mjs +41 -40
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +1 -1
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +12 -12
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +1 -1
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +27 -27
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +1 -1
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +5 -4
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +1 -1
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +2 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +82 -81
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.mjs +1 -1
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +14 -14
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +9 -9
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +19 -18
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +1 -1
- package/esm2022/lib/components/po-page-login/po-page-login-base.component.mjs +43 -2
- package/esm2022/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +12 -12
- package/esm2022/lib/components/po-page-login/po-page-login.component.mjs +77 -77
- package/esm2022/lib/components/po-page-login/po-page-login.service.mjs +1 -1
- package/esm2022/lib/services/po-page-customization/po-page-customization.service.mjs +1 -1
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +1 -1
- package/esm2022/lib/utils/util.mjs +1 -1
- package/fesm2022/po-ui-ng-templates.mjs +432 -387
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/lib/components/po-page-login/po-page-login-base.component.d.ts +33 -1
- package/package.json +12 -12
- package/po-ui-ng-templates-18.0.0-next.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.js.map +1 -1
- package/po-ui-ng-templates-17.18.1.tgz +0 -0
|
@@ -267,6 +267,38 @@ export class PoPageLoginBaseComponent {
|
|
|
267
267
|
*
|
|
268
268
|
*/
|
|
269
269
|
languageChange = new EventEmitter();
|
|
270
|
+
/**
|
|
271
|
+
* @optional
|
|
272
|
+
*
|
|
273
|
+
* @description
|
|
274
|
+
*
|
|
275
|
+
* Define a propriedade nativa `autocomplete` do campo como `off`.
|
|
276
|
+
*
|
|
277
|
+
* @default `false`
|
|
278
|
+
*/
|
|
279
|
+
noAutocompleteLogin;
|
|
280
|
+
/**
|
|
281
|
+
* @optional
|
|
282
|
+
*
|
|
283
|
+
* @description
|
|
284
|
+
*
|
|
285
|
+
* Define a propriedade nativa `autocomplete` do campo como `off`.
|
|
286
|
+
*
|
|
287
|
+
* > No componente `po-password` será definido como `new-password`.
|
|
288
|
+
*
|
|
289
|
+
* @default `false`
|
|
290
|
+
*/
|
|
291
|
+
noAutocompletePassword;
|
|
292
|
+
/**
|
|
293
|
+
* @optional
|
|
294
|
+
*
|
|
295
|
+
* @description
|
|
296
|
+
*
|
|
297
|
+
* Permite esconder a função de espiar a senha digitada.
|
|
298
|
+
*
|
|
299
|
+
* @default `false`
|
|
300
|
+
*/
|
|
301
|
+
hidePasswordPeek;
|
|
270
302
|
allLoginErrors = [];
|
|
271
303
|
allPasswordErrors = [];
|
|
272
304
|
customFieldObject;
|
|
@@ -955,7 +987,7 @@ export class PoPageLoginBaseComponent {
|
|
|
955
987
|
}
|
|
956
988
|
}
|
|
957
989
|
static ɵfac = function PoPageLoginBaseComponent_Factory(t) { return new (t || PoPageLoginBaseComponent)(i0.ɵɵdirectiveInject(i1.PoPageLoginService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.PoLanguageService)); };
|
|
958
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageLoginBaseComponent, inputs: { background: [
|
|
990
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageLoginBaseComponent, inputs: { background: [0, "p-background", "background"], logo: [0, "p-logo", "logo"], loginPattern: [0, "p-login-pattern", "loginPattern"], passwordPattern: [0, "p-password-pattern", "passwordPattern"], secondaryLogo: [0, "p-secondary-logo", "secondaryLogo"], noAutocompleteLogin: [0, "p-no-autocomplete-login", "noAutocompleteLogin"], noAutocompletePassword: [0, "p-no-autocomplete-password", "noAutocompletePassword"], hidePasswordPeek: [0, "p-hide-password-peek", "hidePasswordPeek"], customField: [0, "p-custom-field", "customField"], contactEmail: [0, "p-contact-email", "contactEmail"], productName: [0, "p-product-name", "productName"], environment: [0, "p-environment", "environment"], exceededAttemptsWarning: [0, "p-exceeded-attempts-warning", "exceededAttemptsWarning"], hideRememberUser: [0, "p-hide-remember-user", "hideRememberUser"], literals: [0, "p-literals", "literals"], loading: [0, "p-loading", "loading"], login: [0, "p-login", "login"], loginErrors: [0, "p-login-errors", "loginErrors"], passwordErrors: [0, "p-password-errors", "passwordErrors"], recovery: [0, "p-recovery", "recovery"], registerUrl: [0, "p-register-url", "registerUrl"], authenticationType: [0, "p-authentication-type", "authenticationType"], authenticationUrl: [0, "p-authentication-url", "authenticationUrl"], blockedUrl: [0, "p-blocked-url", "blockedUrl"], support: [0, "p-support", "support"], languagesList: [0, "p-languages", "languagesList"] }, outputs: { loginChange: "p-login-change", loginSubmit: "p-login-submit", passwordChange: "p-password-change", languageChange: "p-language-change" } });
|
|
959
991
|
}
|
|
960
992
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginBaseComponent, [{
|
|
961
993
|
type: Directive
|
|
@@ -986,6 +1018,15 @@ export class PoPageLoginBaseComponent {
|
|
|
986
1018
|
}], languageChange: [{
|
|
987
1019
|
type: Output,
|
|
988
1020
|
args: ['p-language-change']
|
|
1021
|
+
}], noAutocompleteLogin: [{
|
|
1022
|
+
type: Input,
|
|
1023
|
+
args: ['p-no-autocomplete-login']
|
|
1024
|
+
}], noAutocompletePassword: [{
|
|
1025
|
+
type: Input,
|
|
1026
|
+
args: ['p-no-autocomplete-password']
|
|
1027
|
+
}], hidePasswordPeek: [{
|
|
1028
|
+
type: Input,
|
|
1029
|
+
args: ['p-hide-password-peek']
|
|
989
1030
|
}], customField: [{
|
|
990
1031
|
type: Input,
|
|
991
1032
|
args: ['p-custom-field']
|
|
@@ -1041,4 +1082,4 @@ export class PoPageLoginBaseComponent {
|
|
|
1041
1082
|
type: Input,
|
|
1042
1083
|
args: ['p-languages']
|
|
1043
1084
|
}] }); })();
|
|
1044
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1sb2dpbi9wby1wYWdlLWxvZ2luLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkgsT0FBTyxFQUFxQixlQUFlLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7QUFNL0YsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsRUFBRSxFQUF1QjtRQUN2QixLQUFLLEVBQUUsU0FBUztRQUNoQixpQkFBaUIsRUFBRSxlQUFlO1FBQ2xDLFNBQVMsRUFBRTt1REFDd0M7UUFDbkQsZ0JBQWdCLEVBQUUsb0JBQW9CO1FBQ3RDLG9CQUFvQixFQUFFLGtCQUFrQjtRQUN4QyxtQkFBbUIsRUFBRSxzQkFBc0I7UUFDM0MsdUJBQXVCLEVBQUUsZUFBZTtRQUN4QyxzQkFBc0IsRUFBRSxzQkFBc0I7UUFDOUMsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixnQkFBZ0IsRUFBRSxxREFBcUQ7UUFDdkUsV0FBVyxFQUFFLE9BQU87UUFDcEIsY0FBYyxFQUFFLFlBQVk7UUFDNUIsY0FBYyxFQUFFLHVCQUF1QjtRQUN2QyxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsY0FBYztRQUMzQixZQUFZLEVBQUUsT0FBTztRQUNyQixrQkFBa0IsRUFBRSx1QkFBdUI7UUFDM0MsY0FBYyxFQUFFLGFBQWE7UUFDN0IsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixxQkFBcUIsRUFDbkIseUdBQXlHO1FBQzNHLHFCQUFxQixFQUFFLHVGQUF1RjtRQUM5RyxpQkFBaUIsRUFBRSxzQkFBc0I7UUFDekMsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxFQUFFLEVBQXVCO1FBQ3ZCLEtBQUssRUFBRSxZQUFZO1FBQ25CLGlCQUFpQixFQUFFLGdCQUFnQjtRQUNuQyxTQUFTLEVBQUU7NkVBQzhEO1FBQ3pFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxvQkFBb0IsRUFBRSxxQkFBcUI7UUFDM0MsbUJBQW1CLEVBQUUsdUJBQXVCO1FBQzVDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxzQkFBc0IsRUFBRSwrQkFBK0I7UUFDdkQsWUFBWSxFQUFFLGtDQUFrQztRQUNoRCxnQkFBZ0IsRUFBRSx3REFBd0Q7UUFDMUUsV0FBVyxFQUFFLFFBQVE7UUFDckIsY0FBYyxFQUFFLGFBQWE7UUFDN0IsY0FBYyxFQUFFLDBCQUEwQjtRQUMxQyxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLFlBQVksRUFBRSxNQUFNO1FBQ3BCLGtCQUFrQixFQUFFLDBCQUEwQjtRQUM5QyxjQUFjLEVBQUUsaUJBQWlCO1FBQ2pDLFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIscUJBQXFCLEVBQUUsNEZBQTRGO1FBQ25ILHFCQUFxQixFQUNuQixtR0FBbUc7UUFDckcsaUJBQWlCLEVBQUUsc0JBQXNCO1FBQ3pDLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLE9BQU8sRUFBRSxTQUFTO0tBQ25CO0lBQ0QsRUFBRSxFQUF1QjtRQUN2QixLQUFLLEVBQUUsV0FBVztRQUNsQixpQkFBaUIsRUFBRSxnQkFBZ0I7UUFDbkMsU0FBUyxFQUFFOzJEQUM0QztRQUN2RCxnQkFBZ0IsRUFBRSxtQkFBbUI7UUFDckMsb0JBQW9CLEVBQUUsZ0JBQWdCO1FBQ3RDLG1CQUFtQixFQUFFLGtCQUFrQjtRQUN2Qyx1QkFBdUIsRUFBRSxpQkFBaUI7UUFDMUMsc0JBQXNCLEVBQUUsMkJBQTJCO1FBQ25ELFlBQVksRUFBRSx1QkFBdUI7UUFDckMsZ0JBQWdCLEVBQUUscURBQXFEO1FBQ3ZFLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLGNBQWMsRUFBRSxlQUFlO1FBQy9CLGNBQWMsRUFBRSxxQkFBcUI7UUFDckMsYUFBYSxFQUFFLEVBQUU7UUFDakIsV0FBVyxFQUFFLGVBQWU7UUFDNUIsWUFBWSxFQUFFLE1BQU07UUFDcEIsa0JBQWtCLEVBQUUscUJBQXFCO1FBQ3pDLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsUUFBUSxFQUFFLGNBQWM7UUFDeEIscUJBQXFCLEVBQUUsa0ZBQWtGO1FBQ3pHLHFCQUFxQixFQUFFLHNGQUFzRjtRQUM3RyxpQkFBaUIsRUFBRSxxQkFBcUI7UUFDeEMsT0FBTyxFQUFFLGFBQWE7UUFDdEIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxFQUFFLEVBQXVCO1FBQ3ZCLEtBQUssRUFBRSxtQkFBbUI7UUFDMUIsaUJBQWlCLEVBQUUsZ0JBQWdCO1FBQ25DLFNBQVMsRUFBRTtrRUFDbUQ7UUFDOUQsZ0JBQWdCLEVBQUUsdUNBQXVDO1FBQ3pELG9CQUFvQixFQUFFLGlCQUFpQjtRQUN2QyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsdUJBQXVCLEVBQUUsb0JBQW9CO1FBQzdDLHNCQUFzQixFQUFFLDhCQUE4QjtRQUN0RCxZQUFZLEVBQUUscUJBQXFCO1FBQ25DLGdCQUFnQixFQUFFLHNEQUFzRDtRQUN4RSxXQUFXLEVBQUUsT0FBTztRQUNwQixjQUFjLEVBQUUsYUFBYTtRQUM3QixjQUFjLEVBQUUsZ0JBQWdCO1FBQ2hDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFdBQVcsRUFBRSxlQUFlO1FBQzVCLFlBQVksRUFBRSxLQUFLO1FBQ25CLGtCQUFrQixFQUFFLGdCQUFnQjtRQUNwQyxjQUFjLEVBQUUsMkNBQTJDO1FBQzNELFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLHFCQUFxQixFQUFFLDRGQUE0RjtRQUNuSCxxQkFBcUIsRUFBRSx1RUFBdUU7UUFDOUYsaUJBQWlCLEVBQUUscUJBQXFCO1FBQ3hDLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsT0FBTyxFQUFFLFdBQVc7S0FDckI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLEdBQUc7Q0FDUixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFFSCxNQUFNLE9BQWdCLHdCQUF3QjtJQXN3QmxDO0lBQ0Q7SUFDQTtJQXZ3QlQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDb0IsVUFBVSxDQUFVO0lBRTNDOzs7Ozs7OztPQVFHO0lBQ2MsSUFBSSxDQUFVO0lBRS9COzs7Ozs7Ozs7Ozs7O09BYUc7SUFDdUIsWUFBWSxDQUFVO0lBRWhEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDMEIsZUFBZSxDQUFVO0lBRXREOzs7Ozs7T0FNRztJQUN3QixhQUFhLENBQVU7SUFFbEQ7Ozs7Ozs7Ozs7T0FVRztJQUN1QixXQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFFekY7Ozs7Ozs7O09BUUc7SUFDdUIsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFFeEU7Ozs7Ozs7Ozs7T0FVRztJQUMwQixjQUFjLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFFL0Y7Ozs7Ozs7OztPQVNHO0lBQzBCLGNBQWMsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUV2RyxjQUFjLEdBQWtCLEVBQUUsQ0FBQztJQUNuQyxpQkFBaUIsR0FBa0IsRUFBRSxDQUFDO0lBQ3RDLGlCQUFpQixDQUF5QjtJQUMxQyxlQUFlLENBQVM7SUFDeEIsaUJBQWlCLENBQWU7SUFDaEMsUUFBUSxDQUFTO0lBQ2pCLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsZ0JBQWdCLENBQVM7SUFDekIsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO0lBRTVCLG1CQUFtQixHQUFrQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUM7SUFDekYsa0JBQWtCLENBQVM7SUFDM0IsV0FBVyxDQUFTO0lBQ3BCLGFBQWEsQ0FBUztJQUN0QixZQUFZLENBQWtDO0lBQzlDLFlBQVksQ0FBVTtJQUN0Qix3QkFBd0IsQ0FBVTtJQUNsQyxpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsU0FBUyxDQUFzQjtJQUMvQixRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLE1BQU0sQ0FBUztJQUNmLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLGVBQWUsR0FBa0IsRUFBRSxDQUFDO0lBQ3BDLFlBQVksQ0FBUztJQUNyQixTQUFTLENBQTBDO0lBQ25ELFlBQVksQ0FBUztJQUNyQixRQUFRLENBQW9CO0lBQzVCLGNBQWMsQ0FBb0I7SUFFMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvREc7SUFDSCxJQUE2QixXQUFXLENBQUMsS0FBc0M7UUFDN0UsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakUsT0FBTzthQUNSO1lBRUQsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzNFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQTJCLEtBQUssQ0FBQztnQkFFdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO29CQUNsRSxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztpQkFDaEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztpQkFDNUU7Z0JBRUQsT0FBTzthQUNSO1NBQ0Y7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQThCLFlBQVksQ0FBQyxLQUFhO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQTZCLFdBQVcsQ0FBQyxLQUFhO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUE0QixXQUFXLENBQUMsV0FBbUI7UUFDekQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRywyQkFBMkIsRUFBRTtZQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7U0FDM0U7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxJQUEwQyx1QkFBdUIsQ0FBQyxLQUFhO1FBQzdFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsSUFBbUMsZ0JBQWdCLENBQUMsS0FBYztRQUNoRSxJQUFJLENBQUMsaUJBQWlCLEdBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1RSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7SUFDRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkRHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLEtBQTBCO1FBQzFELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUF3QixPQUFPLENBQUMsS0FBYztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQXNCLEtBQUssQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBNkIsV0FBVyxDQUFDLEtBQW9CO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFnQyxjQUFjLENBQUMsS0FBb0I7UUFDakUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILElBQXlCLFFBQVEsQ0FBQyxLQUE4QztRQUM5RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsSUFBNkIsV0FBVyxDQUFDLEtBQWE7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BOEJHO0lBQ0gsSUFBb0Msa0JBQWtCLENBQUMsS0FBb0M7UUFDekYsSUFBSSxDQUFDLG1CQUFtQixHQUFTLE1BQU8sQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzVGLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BZ0hHO0lBQ0gsSUFBbUMsaUJBQWlCLENBQUMsS0FBYTtRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDMUUsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBNEIsVUFBVSxDQUFDLEtBQWE7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxJQUF3QixPQUFPLENBQUMsS0FBd0I7UUFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxJQUEwQixhQUFhLENBQUMsYUFBZ0M7UUFDdEUsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO2dCQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQzthQUNyQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pHO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM1QjtRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM5RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsT0FBTztZQUNMLEdBQUcsMEJBQTBCLENBQUMsZUFBZSxDQUFDO1lBQzlDLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM1QyxHQUFHLHlCQUF5QjtZQUM1QixHQUFHLElBQUksQ0FBQyxRQUFRO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsWUFDVSxZQUFnQyxFQUNqQyxNQUFjLEVBQ2QsaUJBQW9DO1FBRm5DLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUUzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLFNBQVMsR0FBZ0I7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7U0FDM0U7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVk7aUJBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQztpQkFDbkUsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUM3QixjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxFQUNELEtBQUssQ0FBQyxFQUFFO2dCQUNOLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtvQkFDNUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDeEU7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUNGLENBQUM7U0FDTDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsUUFBUTtRQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVc7UUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVc7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQzdELElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDaEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQztZQUN6QyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BHO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQU87UUFDbkMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztZQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztZQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQzNDO2FBQU07WUFDTCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztrRkExMUJtQix3QkFBd0I7NkRBQXhCLHdCQUF3Qjs7aUZBQXhCLHdCQUF3QjtjQUQ3QyxTQUFTO3dHQW1CZSxVQUFVO2tCQUFoQyxLQUFLO21CQUFDLGNBQWM7WUFXSixJQUFJO2tCQUFwQixLQUFLO21CQUFDLFFBQVE7WUFnQlcsWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFnQkssZUFBZTtrQkFBM0MsS0FBSzttQkFBQyxvQkFBb0I7WUFTQSxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQWFDLFdBQVc7a0JBQXBDLE1BQU07bUJBQUMsZ0JBQWdCO1lBV0UsV0FBVztrQkFBcEMsTUFBTTttQkFBQyxnQkFBZ0I7WUFhSyxjQUFjO2tCQUExQyxNQUFNO21CQUFDLG1CQUFtQjtZQVlFLGNBQWM7a0JBQTFDLE1BQU07bUJBQUMsbUJBQW1CO1lBb0ZFLFdBQVc7a0JBQXZDLEtBQUs7bUJBQUMsZ0JBQWdCO1lBc0NPLFlBQVk7a0JBQXpDLEtBQUs7bUJBQUMsaUJBQWlCO1lBY0ssV0FBVztrQkFBdkMsS0FBSzttQkFBQyxnQkFBZ0I7WUFlSyxXQUFXO2tCQUF0QyxLQUFLO21CQUFDLGVBQWU7WUF1Qm9CLHVCQUF1QjtrQkFBaEUsS0FBSzttQkFBQyw2QkFBNkI7WUF1QkQsZ0JBQWdCO2tCQUFsRCxLQUFLO21CQUFDLHNCQUFzQjtZQXVFSixRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFtQkssT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBZUksS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBbUJhLFdBQVc7a0JBQXZDLEtBQUs7bUJBQUMsZ0JBQWdCO1lBZVMsY0FBYztrQkFBN0MsS0FBSzttQkFBQyxtQkFBbUI7WUE2QkQsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBc0JVLFdBQVc7a0JBQXZDLEtBQUs7bUJBQUMsZ0JBQWdCO1lBdUNhLGtCQUFrQjtrQkFBckQsS0FBSzttQkFBQyx1QkFBdUI7WUEySEssaUJBQWlCO2tCQUFuRCxLQUFLO21CQUFDLHNCQUFzQjtZQWdCRCxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUEwQkUsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBeUJRLGFBQWE7a0JBQXRDLEtBQUs7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgY29udmVydFRvSW50LCBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSwgaXNFeHRlcm5hbExpbmssIGlzVHlwZW9mIH0gZnJvbSAnLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UsIHBvTG9jYWxlRGVmYXVsdCwgUG9MYW5ndWFnZSwgcG9MYW5ndWFnZURlZmF1bHQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IFBvUGFnZUxvZ2luIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlIH0gZnJvbSAnLi9lbnVtcy9wby1wYWdlLWxvZ2luLWF1dGhlbnRpY2F0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tY3VzdG9tLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpbkxpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luUmVjb3ZlcnkgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1yZWNvdmVyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWxvZ2luLnNlcnZpY2UnO1xuXG5jb25zdCBwb1BhZ2VMb2dpbkNvbnRlbnRNYXhMZW5ndGggPSA0MDtcblxuZXhwb3J0IGNvbnN0IHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogPFBvUGFnZUxvZ2luTGl0ZXJhbHM+e1xuICAgIHRpdGxlOiAnV2VsY29tZScsXG4gICAgbG9naW5FcnJvclBhdHRlcm46ICdJbnZhbGlkIExvZ2luJyxcbiAgICBsb2dpbkhpbnQ6IGBZb3VyIGxvZ2luIHVzZXIgd2FzIGdpdmVuIHRvIHlvdSBhdCB5b3VyIGZpcnN0IGRheS5cbiAgICBJZiB5b3UgZG9uJ3QgaGF2ZSB0aGlzIGluZm9ybWF0aW9uIGNvbnRhY3Qgc3VwcG9ydGAsXG4gICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2VydCB5b3VyIGUtbWFpbCcsXG4gICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdJbnZhbGlkIFBhc3N3b3JkJyxcbiAgICBwYXNzd29yZFBsYWNlaG9sZGVyOiAnSW5zZXJ0IHlvdXIgcGFzc3dvcmQnLFxuICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnSW52YWxpZCB2YWx1ZScsXG4gICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ1BsZWFzZSBlbnRlciBhIHZhbHVlJyxcbiAgICByZW1lbWJlclVzZXI6ICdBdXRvbWF0aWMgbG9naW4nLFxuICAgIHJlbWVtYmVyVXNlckhpbnQ6ICdZb3UgY2FuIGRpc2FibGUgdGhpcyBvcHRpb24gaW4gc3lzdGVtIGNvbmZpZ3VyYXRpb24nLFxuICAgIHN1Ym1pdExhYmVsOiAnRW50ZXInLFxuICAgIHN1Ym1pdHRlZExhYmVsOiAnTG9hZGluZy4uLicsXG4gICAgZm9yZ290UGFzc3dvcmQ6ICdGb3Jnb3QgeW91ciBQYXNzd29yZD8nLFxuICAgIGhpZ2hsaWdodEluZm86ICcnLFxuICAgIHJlZ2lzdGVyVXJsOiAnTmV3IHJlZ2lzdGVyJyxcbiAgICB0aXRsZVBvcG92ZXI6ICdPb3BzIScsXG4gICAgZm9yZ290WW91clBhc3N3b3JkOiAnRm9yZ290IHlvdXIgcGFzc3dvcmQ/JyxcbiAgICBpZllvdVRyeUhhcmRlcjogJ0lmIHlvdSB0cnkgJyxcbiAgICBhdHRlbXB0czogJ3swfSBtb3JlIHRpbWUocykgJyxcbiAgICB5b3VyVXNlcldpbGxCZUJsb2NrZWQ6XG4gICAgICAnd2l0aG91dCBzdWNjZXNzIHlvdXIgdXNlciB3aWxsIGJlIGJsb2NrZWQgYW5kIHlvdSB3aWxsIGJlIGxlZnQgMjQgaG91cnMgd2l0aG91dCBiZWluZyBhYmxlIHRvIGFjY2VzcyA6KCcsXG4gICAgY3JlYXRlQU5ld1Bhc3N3b3JkTm93OiAnQmV0dGVyIGNyZWF0ZSBhIG5ldyBwYXNzd29yZCBub3chIFlvdSB3aWxsIGJlIGFibGUgdG8gbG9nIGludG8gdGhlIHN5c3RlbSByaWdodCBhd2F5LicsXG4gICAgaUZvcmdvdE15UGFzc3dvcmQ6ICdJIGZvcmdvdCBteSBwYXNzd29yZCcsXG4gICAgd2VsY29tZTogJ1dlbGNvbWUnLFxuICAgIHN1cHBvcnQ6ICdTdXBwb3J0J1xuICB9LFxuICBlczogPFBvUGFnZUxvZ2luTGl0ZXJhbHM+e1xuICAgIHRpdGxlOiAnQmllbnZlbmlkbycsXG4gICAgbG9naW5FcnJvclBhdHRlcm46ICdMb2dpbiBpbnbDoWxpZG8nLFxuICAgIGxvZ2luSGludDogYFN1IHVzdWFyaW8gaGEgc2lkbyBlbnRyZWdhZG8gcGFyYSB1c3RlZCBlbiBzdSBwcmltZXIgZMOtYS5cbiAgICBTaSBubyB0aWVuZSBlc3RhIGluZm9ybWFjacOzbiwgcMOzbmdhc2UgZW4gY29udGFjdG8gY29uIGVsIHNvcG9ydGUgdMOpY25pY29gLFxuICAgIGxvZ2luUGxhY2Vob2xkZXI6ICdJbnNlcnRlIHN1IGUtbWFpbCcsXG4gICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdDb250cmFzZcOxYSBpbnbDoWxpZGEnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNlcnRlIHN1IGNvbnRyYXNlw7FhJyxcbiAgICBjdXN0b21GaWVsZEVycm9yUGF0dGVybjogJ1ZhbG9yIG5vIHbDoWxpZG8uJyxcbiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAnUG9yIGZhdm9yIGludHJvZHV6Y2EgdW4gdmFsb3InLFxuICAgIHJlbWVtYmVyVXNlcjogJ0luaWNpbyBkZSBzZXNpw7NuIGF1dG9tw6F0aWNhbWVudGUnLFxuICAgIHJlbWVtYmVyVXNlckhpbnQ6ICdQdWVkZSBkZXNoYWJpbGl0YXIgZXN0YSBvcGNpw7NuIGVuIGVsIG1lbsO6IGRlbCBzaXN0ZW1hLicsXG4gICAgc3VibWl0TGFiZWw6ICdFbnRyYXInLFxuICAgIHN1Ym1pdHRlZExhYmVsOiAnQ2FyZ2FuZG8uLi4nLFxuICAgIGZvcmdvdFBhc3N3b3JkOiAnT2x2aWRhc3RlIHR1IGNvbnRyYXNlw7FhPycsXG4gICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAgcmVnaXN0ZXJVcmw6ICdOdWV2byByZWdpc3RybycsXG4gICAgdGl0bGVQb3BvdmVyOiAnT3BhIScsXG4gICAgZm9yZ290WW91clBhc3N3b3JkOiAnT2x2aWRhc3RlIHR1IGNvbnRyYXNlw7FhPycsXG4gICAgaWZZb3VUcnlIYXJkZXI6ICdTaSBpbnRlbnRhIG3DoXMgJyxcbiAgICBhdHRlbXB0czogJ3swfSB2ZXovdmVjZXMgJyxcbiAgICB5b3VyVXNlcldpbGxCZUJsb2NrZWQ6ICdzaW4gw6l4aXRvIHN1IHVzdWFyaW8gc2VyYSBibG9xdWVhZG8geSB1c3RlZCB2w6FzIHBlcm1hbmVjZXIgMjQgaG9yYXMgc2luIHBvZGVyIGFjY2VkZXIgYSA6KCcsXG4gICAgY3JlYXRlQU5ld1Bhc3N3b3JkTm93OlxuICAgICAgJ8KhTWVqb3IgY3JlYXIgdW5hIG51ZXZhIGNvbnRyYXNlw7FhIGFob3JhISBVc3RlZCBwb2Ryw6EgZW50cmFyIGVuIGVsIHNpc3RlbWEgaW5tZWRpYXRhbWVudGUgZGVzcHXDqXMuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ09sdmlkZSBtaSBjb250cmFzZcOxYScsXG4gICAgd2VsY29tZTogJ0JpZW52ZW5pZG8nLFxuICAgIHN1cHBvcnQ6ICdTb3BvcnRlJ1xuICB9LFxuICBwdDogPFBvUGFnZUxvZ2luTGl0ZXJhbHM+e1xuICAgIHRpdGxlOiAnQmVtLXZpbmRvJyxcbiAgICBsb2dpbkVycm9yUGF0dGVybjogJ0xvZ2luIGludsOhbGlkbycsXG4gICAgbG9naW5IaW50OiBgU2V1IHVzdcOhcmlvIGZvaSBlbnRyZWd1ZSBhIHZvY8OqIG5vIHNldSBwcmltZWlybyBkaWEuXG4gICAgQ2FzbyBuw6NvIHRlbmhhIG1haXMgZXNzYSBpbmZvcm1hw6fDo28gY29udGFjdGUgbyBzdXBvcnRlYCxcbiAgICBsb2dpblBsYWNlaG9sZGVyOiAnSW5zaXJhIHNldSBlLW1haWwnLFxuICAgIHBhc3N3b3JkRXJyb3JQYXR0ZXJuOiAnU2VuaGEgaW52w6FsaWRhJyxcbiAgICBwYXNzd29yZFBsYWNlaG9sZGVyOiAnSW5zaXJhIHN1YSBzZW5oYScsXG4gICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICdWYWxvciBpbnbDoWxpZG8uJyxcbiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAnUG9yIGZhdm9yIGluc2lyYSB1bSB2YWxvcicsXG4gICAgcmVtZW1iZXJVc2VyOiAnTG9nYXIgYXV0b21hdGljYW1lbnRlJyxcbiAgICByZW1lbWJlclVzZXJIaW50OiAnVm9jw6ogcG9kZSBkZXNhYmlsaXRhciBlc3NhIG9ww6fDo28gbm8gbWVudSBkbyBzaXN0ZW1hJyxcbiAgICBzdWJtaXRMYWJlbDogJ0VudHJhcicsXG4gICAgc3VibWl0dGVkTGFiZWw6ICdDYXJyZWdhbmRvLi4uJyxcbiAgICBmb3Jnb3RQYXNzd29yZDogJ0VzcXVlY2V1IHN1YSBzZW5oYT8nLFxuICAgIGhpZ2hsaWdodEluZm86ICcnLFxuICAgIHJlZ2lzdGVyVXJsOiAnTm92byByZWdpc3RybycsXG4gICAgdGl0bGVQb3BvdmVyOiAnT3BhIScsXG4gICAgZm9yZ290WW91clBhc3N3b3JkOiAnRXNxdWVjZXUgc3VhIHNlbmhhPycsXG4gICAgaWZZb3VUcnlIYXJkZXI6ICdTZSB0ZW50YXIgbWFpcyAnLFxuICAgIGF0dGVtcHRzOiAnezB9IHZleihlcykgJyxcbiAgICB5b3VyVXNlcldpbGxCZUJsb2NrZWQ6ICdzZW0gc3VjZXNzbyBzZXUgdXN1w6FyaW8gc2Vyw6EgYmxvcXVlYWRvIGUgdm9jw6ogZmljYSAyNCBob3JhcyBzZW0gcG9kZXIgYWNlc3NhciA6KCcsXG4gICAgY3JlYXRlQU5ld1Bhc3N3b3JkTm93OiAnTWVsaG9yIGNyaWFyIHVtYSBzZW5oYSBub3ZhIGFnb3JhISBWb2PDqiB2YWkgcG9kZXIgZW50cmFyIG5vIHNpc3RlbWEgbG9nbyBlbSBzZWd1aWRhLicsXG4gICAgaUZvcmdvdE15UGFzc3dvcmQ6ICdFc3F1ZWNpIG1pbmhhIHNlbmhhJyxcbiAgICB3ZWxjb21lOiAnQm9hcy12aW5kYXMnLFxuICAgIHN1cHBvcnQ6ICdTdXBvcnRlJ1xuICB9LFxuICBydTogPFBvUGFnZUxvZ2luTGl0ZXJhbHM+e1xuICAgIHRpdGxlOiAn0JTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCEnLFxuICAgIGxvZ2luRXJyb3JQYXR0ZXJuOiAn0J3QtdCy0LXRgNC90YvQuSDQu9C+0LPQuNC9JyxcbiAgICBsb2dpbkhpbnQ6IGDQktCw0Ygg0LvQvtCz0LjQvSDQsdGL0Lsg0L/RgNC10LTQvtGB0YLQsNCy0LvQtdC9INCy0LDQvCDQsiDQv9C10YDQstGL0Lkg0LTQtdC90YwuXG4gICAg0JXRgdC70Lgg0YMg0LLQsNGBINC90LXRgiDRjdGC0L7QuSDQuNC90YTQvtGA0LzQsNGG0LjQuCwg0L7QsdGA0LDRgtC40YLQtdGB0Ywg0LIg0YHQu9GD0LbQsdGDINC/0L7QtNC00LXRgNC20LrQuGAsXG4gICAgbG9naW5QbGFjZWhvbGRlcjogJ9CS0YHRgtCw0LLRjNGC0LUg0YHQstC+0Lkg0LDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YsnLFxuICAgIHBhc3N3b3JkRXJyb3JQYXR0ZXJuOiAn0J3QtdCy0LXRgNC90YvQuSDQv9Cw0YDQvtC70YwnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICfQktCy0LXQtNC40YLQtSDRgdCy0L7QuSDQv9Cw0YDQvtC70YwnLFxuICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAn0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1LicsXG4gICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ9Cf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDQt9C90LDRh9C10L3QuNC1JyxcbiAgICByZW1lbWJlclVzZXI6ICfQkNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuNC5INCy0YXQvtC0JyxcbiAgICByZW1lbWJlclVzZXJIaW50OiAn0JLRiyDQvNC+0LbQtdGC0LUg0L7RgtC60LvRjtGH0LjRgtGMINGN0YLRgyDQvtC/0YbQuNGOINCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDRgdC40YHRgtC10LzRiycsXG4gICAgc3VibWl0TGFiZWw6ICfQktC+0LnRgtC4JyxcbiAgICBzdWJtaXR0ZWRMYWJlbDogJzPQsNCz0YDRg9C30LrQsC4uLicsXG4gICAgZm9yZ290UGFzc3dvcmQ6ICfQl9Cw0LHRi9C70Lgg0L/QsNGA0L7Qu9GMPycsXG4gICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAgcmVnaXN0ZXJVcmw6ICfQndC+0LLRi9C5INGA0LXQs9C40YHRgtGAJyxcbiAgICB0aXRsZVBvcG92ZXI6ICfQntC5IScsXG4gICAgZm9yZ290WW91clBhc3N3b3JkOiAn0JfQsNCx0YvQu9C4INC/0LDRgNC+0LvRjD8nLFxuICAgIGlmWW91VHJ5SGFyZGVyOiAn0JXRgdC70Lgg0LLRiyDQsdC10LfRg9GB0L/QtdGI0L3QviDQv9C+0L/Ri9GC0LDQtdGC0LXRgdGMINCy0L7QudGC0Lgg0LXRidC1ICcsXG4gICAgYXR0ZW1wdHM6ICd7MH0g0YDQsNC3KNCwKSAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDogJ9CS0LDRiCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0LHRg9C00LXRgiDQt9Cw0LHQu9C+0LrQuNGA0L7QstCw0L0sINC4INCS0Ysg0L7RgdGC0LDQvdC10YLQtdGB0Ywg0L3QsCAyNCDRh9Cw0YHQsCDQsdC10Lcg0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQtNC+0YHRgtGD0L/QsCA6KCcsXG4gICAgY3JlYXRlQU5ld1Bhc3N3b3JkTm93OiAn0JvRg9GH0YjQtSDRgdC+0LfQtNCw0LnRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMINGB0LXQudGH0LDRgSHCoNCS0Ysg0YHQvNC+0LbQtdGC0LUg0YHRgNCw0LfRgyDQstC+0LnRgtC4INCyINGB0LjRgdGC0LXQvNGDLicsXG4gICAgaUZvcmdvdE15UGFzc3dvcmQ6ICfQryDQt9Cw0LHRi9C7INGB0LLQvtC5INC/0LDRgNC+0LvRjCcsXG4gICAgd2VsY29tZTogJ9C00L7QsdGA0L4g0L/QvtC20LDQu9C+0LLQsNGC0YwnLFxuICAgIHN1cHBvcnQ6ICfQn9C+0LTQtNC10YDQttC60LAnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb1BhZ2VMb2dpbkxpdGVyYWxJbiA9IHtcbiAgZW46ICdpbicsXG4gIGVzOiAnZW4nLFxuICBwdDogJ2VtJyxcbiAgcnU6ICfQsidcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBjb21wb25lbnRlIGBwby1wYWdlLWxvZ2luYCDDqSB1dGlsaXphZG8gY29tbyB0ZW1wbGF0ZSBwYXJhIHRlbGEgZGUgbG9naW4uXG4gKiBDb20gZWxlIMOpIHBvc3PDrXZlbCBkZWZpbmlybW9zIHZhbG9yZXMgcGFyYSB1c3XDoXJpbywgc2VuaGEgZSBkZWZpbmlyIGHDp8O1ZXMgcGFyYSByZWN1cGVyYcOnw6NvIGRlIHNlbmhhIGUgZ3JhdmHDp8OjbyBkZSBkYWRvcyBkbyB1c3XDoXJpby5cbiAqIFRhbWLDqW0gw6kgcG9zc8OtdmVsIGluc2VyaXIgdW1hIGltYWdlbSBlbSBjb25qdW50byBjb20gdW0gdGV4dG8gZGUgZGVzdGFxdWUuXG4gKlxuICpcbiAqIEEgcHJvcHJpZWRhZGUgYHAtYXV0aGVudGljYXRpb24tdXJsYCBhdXRvbWF0aXphIGEgcm90aW5hIGRvIGNvbXBvbmVudGUgZSBzaW1wbGlmaWNhIG8gcHJvY2Vzc28gcGFyYSBhdXRlbnRpY2HDp8OjbyBkbyB1c3XDoXJpbywgYmFzdGFuZG9cbiAqIGRlZmluaXIgdW1hIHVybCBwYXJhIHJlcXVpc2nDp8OjbyBkYSBhdXRlbnRpY2HDp8Ojby4gQSBmbGV4aWJpbGlkYWRlIGUgcHJhdGljaWRhZGUgcG9kZW0gY2hlZ2FyIGEgdW0gbsOtdmVsIGVtIHF1ZSBvIGRlc2Vudm9sdmltZW50b1xuICogZGEgYXBsaWNhw6fDo28gbm8gKmNsaWVudCBzaWRlKiDDqSBkZXNwcm92aWRhIGRlIHF1YWxxdWVyIGPDs2RpZ28tZm9udGUgcmVsYWNpb25hZG8gw6Agcm90aW5hIGRlIGxvZ2luIGRlIHVzdcOhcmlvLlxuICogU2V1IGRldGFsaGFtZW50byBwYXJhIHVzbyBwb2RlIHNlciB2aXN0byBsb2dvIGFiYWl4byBlbSAqcHJvcHJpZWRhZGVzKi5cbiAqIENhc28ganVsZ3VlIG5lY2Vzc8OhcmlvLCBwb2RlLXNlIHRhbWLDqW0gZGVmaW5pciBtYW51YWxtZW50ZSBhIHJvdGluYSBkbyBjb21wb25lbnRlLlxuICpcbiAqXG4gKiBQYXJhIHF1ZSBhcyBpbWFnZW5zIHNlamFtIGV4aWJpZGFzIGNvcnJldGFtZW50ZSwgw6kgbmVjZXNzw6FyaW8gaW5jbHVpciBvIGNhbWluaG8gZGVsYXMgYW8gcHJvamV0by4gUGFyYSBpc3NvLCBlZGl0ZVxuICogbyAqYXNzZXRzKiBubyBhcnF1aXZvICoqYW5ndWxhci5qc29uKiogZGEgYXBsaWNhw6fDo28gbmEgc2VndWludGUgb3JkZW06XG4gKiBgYGBcbiAqICAgXCJhc3NldHNcIjogW1xuICogICAgIFwic3JjL2Fzc2V0c1wiLFxuICogICAgIFwic3JjL2Zhdmljb24uaWNvXCIsXG4gKiAgICAge1xuICogICAgICAgXCJnbG9iXCI6IFwiKipcXC8qXCIsXG4gKiAgICAgICBcImlucHV0XCI6IFwibm9kZV9tb2R1bGVzL0Bwby11aS9zdHlsZS9pbWFnZXNcIixcbiAqICAgICAgIFwib3V0cHV0XCI6IFwiYXNzZXRzL2ltYWdlc1wiXG4gKiAgICAgfVxuICogICBdXG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIE8gYHAtYmFja2dyb3VuZGAgcGVybWl0ZSBpbnNlcmlyIHVtYSBpbWFnZW0gZGUgZGVzdGFxdWUgYW8gbGFkbyBkaXJlaXRvIGRvIGZvcm11bMOhcmlvIGRlIGxvZ2luLCBjYXNvIGEgcHJvcHJpZWRhZGVcbiAgICogbsOjbyBzZWphIHByZWVuY2hpZGEgbyBmb3JtdWzDoXJpbyBzZXLDoSBjZW50cmFsaXphZG8gbm8gZXNwYcOnbyBkaXNwb27DrXZlbC5cbiAgICpcbiAgICogQSBmb250ZSBkYSBpbWFnZW0gcG9kZSBzZXIgZGUgdW0gY2FtaW5obyBsb2NhbCBvdSB1bWEgdXJsIGRlIHVtIHNlcnZpZG9yIGV4dGVybm8uXG4gICAqXG4gICAqIEFsw6ltIGRhIGltYWdlbSwgw6kgcG9zc8OtdmVsIGFkaWNpb25hciB1bSB0ZXh0byBpbmZvcm1hdGl2byBwb3IgY2ltYSBkYSBpbWFnZW0gZGEgaW1hZ2VtIGRlIGRlc3RhcXVlLCBwYXJhIGlzc28gaW5mb3JtZVxuICAgKiB1bSB2YWxvciBwYXJhIGEgbGl0ZXJhbCBgaGlnaGxpZ2h0SW5mb2AuXG4gICAqXG4gICAqID4gVmVqYSBtYWlzIHNvYnJlIGFzIGxpdGVyYWlzIG5hIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYC5cbiAgICpcbiAgICogRXhlbXBsb3MgZGUgdmFsb3JlcyB2w6FsaWRvczpcbiAgICogLSAqKmxvY2FsKio6IGAuL2Fzc2V0cy9pbWFnZXMvbG9naW4tYmFja2dyb3VuZC5wbmdgXG4gICAqIC0gKip1cmwgZXh0ZXJuYSoqOiBgaHR0cHM6Ly9wby11aS5pby9hc3NldHMvaW1hZ2VzL2xvZ2luLWJhY2tncm91bmQucG5nYFxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgw6kgaWdub3JhZGEgcGFyYSBhcGxpY2HDp8O1ZXMgbW9iaWxlLlxuICAgKi9cbiAgQElucHV0KCdwLWJhY2tncm91bmQnKSBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSBsb2NhbGl6YWRhIG5hIHBhcnRlIHN1cGVyaW9yLlxuICAgKlxuICAgKiA+IENhc28gc2VqYSBpbmRlZmluaWRhIG8gZXNwYcOnbyBzZSBtYW50w6ltIHByZXNlcnZhZG8gcG9yw6ltIHZhemlvLlxuICAgKi9cbiAgQElucHV0KCdwLWxvZ28nKSBsb2dvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV4cHJlc3PDo28gcmVndWxhciBwYXJhIHZhbGlkYXIgbyBjYW1wbyBkZSBsb2dpbiwgY2FzbyBhIGV4cHJlc3PDo28gbsOjbyBzZWphIGF0ZW50aWRhLCBhIGxpdGVyYWwgYGxvZ2luRXJyb3JQYXR0ZXJuYFxuICAgKiBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiBFeGVtcGxvcyBkZSB2YWxvcmVzIHbDoWxpZG9zOlxuICAgKiAtIGVtYWlsOiBgW2V4cHJlc3Nhby1yZWd1bGFyLWVtYWlsXWBcbiAgICogLSBjcGY6IGBbZXhwcmVzc2FvLXJlZ3VsYXItY3BmXWBcbiAgICpcbiAgICogPiBWZWphIGEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgIHBhcmEgY3VzdG9taXphciBhIGxpdGVyYWwgYGxvZ2luRXJyb3JQYXR0ZXJuYC5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dpbi1wYXR0ZXJuJykgbG9naW5QYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV4cHJlc3PDo28gcmVndWxhciBwYXJhIHZhbGlkYXIgbyBjYW1wbyBkZSBwYXNzd29yZCwgY2FzbyBhIGV4cHJlc3PDo28gbsOjbyBzZWphIGF0ZW50aWRhLCBhIGxpdGVyYWwgYHBhc3N3b3JkRXJyb3JQYXR0ZXJuYFxuICAgKiBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiBFeGVtcGxvcyBkZSB2YWxvcmVzIHbDoWxpZG9zOlxuICAgKiAtIEFwZW5hcyBuw7ptZXJvczogYFxcZD9gXG4gICAqIC0gTGV0cmFzIG3DrW51c2N1bGFzOiBgXFx6P2BcbiAgICpcbiAgICogPiBWZWphIGEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgIHBhcmEgY3VzdG9taXphciBhIGxpdGVyYWwgYHBhc3N3b3JkRXJyb3JQYXR0ZXJuYC5cbiAgICovXG4gIEBJbnB1dCgncC1wYXNzd29yZC1wYXR0ZXJuJykgcGFzc3dvcmRQYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSBsb2NhbGl6YWRhIG5vIHJvZGFww6kuXG4gICAqL1xuICBASW5wdXQoJ3Atc2Vjb25kYXJ5LWxvZ28nKSBzZWNvbmRhcnlMb2dvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIG8gdXN1w6FyaW8gYWx0ZXJhciBvIGlucHV0IGRvIGNhbXBvIGxvZ2luLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtYSB2YXJpw6F2ZWwgZG8gdGlwbyBgc3RyaW5nYCBjb20gbyB0ZXh0byBpbmZvcm1hZG8gbm8gY2FtcG8uXG4gICAqXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzZXLDoSBpZ25vcmFkYSBzZSBmb3IgZGVmaW5pZG8gdmFsb3IgcGFyYSBhIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXVybGAuXG4gICAqL1xuICBAT3V0cHV0KCdwLWxvZ2luLWNoYW5nZScpIGxvZ2luQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHN1Ym1ldGVyIG8gZm9ybXVsw6FyaW8gZGUgbG9naW4gKGFwZXJ0YW5kbyBgRW50ZXJgIGRlbnRybyBkb3MgY2FtcG9zIG91IHByZXNzaW9uYW5kbyBvIGJvdMOjbyBkZSBjb25maXJtYcOnw6NvKS5cbiAgICpcbiAgICogRXNzZSBldmVudG8gcmVjZWJlcsOhIGNvbW8gcGFyw6JtZXRybyB1bSBvYmpldG8gZG8gdGlwbyBgUG9QYWdlTG9naW5gIGNvbSBvcyBkYWRvcyBpbmZvcm1hZG9zIG5vIGZvcm11bMOhcmlvLlxuICAgKlxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgaWdub3JhZGEgc2UgZm9yIGRlZmluaWRvIHZhbG9yIHBhcmEgYSBwcm9wcmllZGFkZSBgcC11cmwtcmVjb3ZlcnlgLlxuICAgKlxuICAgKiA+IFBhcmEgbWFpcyBkZXRhbGhlcyBjb25zdWx0ZSBhIGRvY3VtZW50YcOnw6NvIHNvYnJlIGEgaW50ZXJmYWNlIGBQb1BhZ2VMb2dpbmAgbWFpcyBhYmFpeG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWxvZ2luLXN1Ym1pdCcpIGxvZ2luU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxQb1BhZ2VMb2dpbj4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIHF1YW5kbyBvIHVzdcOhcmlvIGFsdGVyYXIgbyBpbnB1dCBkbyBjYW1wbyBwYXNzd29yZC5cbiAgICpcbiAgICogRXNzZSBldmVudG8gcmVjZWJlcsOhIGNvbW8gcGFyw6JtZXRybyB1bWEgdmFyacOhdmVsIGRvIHRpcG8gYHN0cmluZ2AgY29tIG8gdGV4dG8gaW5mb3JtYWRvIG5vIGNhbXBvLlxuICAgKlxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgaWdub3JhZGEgc2UgZm9yIGRlZmluaWRvIHZhbG9yIHBhcmEgYSBwcm9wcmllZGFkZSBgcC1hdXRoZW50aWNhdGlvbi11cmxgLlxuICAgKi9cbiAgQE91dHB1dCgncC1wYXNzd29yZC1jaGFuZ2UnKSBwYXNzd29yZENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIHF1YW5kbyBvIHVzdcOhcmlvIGFsdGVyYXIgbyBpZGlvbWEgZGEgcMOhZ2luYS5cbiAgICpcbiAgICogRXNzZSBldmVudG8gcmVjZWJlcsOhIGNvbW8gcGFyw6JtZXRybyB1bSBvYmpldG8gZG8gdGlwbyBgUG9MYW5ndWFnZWAgY29tIGEgbGluZ3VhZ2VtIHNlbGVjaW9uYWRhLlxuICAgKlxuICAgKi9cbiAgQE91dHB1dCgncC1sYW5ndWFnZS1jaGFuZ2UnKSBsYW5ndWFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPFBvTGFuZ3VhZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb0xhbmd1YWdlPigpO1xuXG4gIGFsbExvZ2luRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGFsbFBhc3N3b3JkRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGN1c3RvbUZpZWxkT2JqZWN0OiBQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkO1xuICBjdXN0b21GaWVsZFR5cGU6IHN0cmluZztcbiAgbG9naW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVtZW1iZXJVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZztcbiAgc2hvd0V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25UeXBlOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSA9IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlLkJhc2ljO1xuICBwcml2YXRlIF9hdXRoZW50aWNhdGlvblVybDogc3RyaW5nO1xuICBwcml2YXRlIF9ibG9ja2VkVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRhY3RFbWFpbDogc3RyaW5nO1xuICBwcml2YXRlIF9jdXN0b21GaWVsZDogc3RyaW5nIHwgUG9QYWdlTG9naW5DdXN0b21GaWVsZDtcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nPzogbnVtYmVyO1xuICBwcml2YXRlIF9oaWRlUmVtZW1iZXJVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzO1xuICBwcml2YXRlIF9sb2FkaW5nPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sb2dpbjogc3RyaW5nO1xuICBwcml2YXRlIF9sb2dpbkVycm9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIF9wYXNzd29yZEVycm9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIF9wcm9kdWN0TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9yZWNvdmVyeTogc3RyaW5nIHwgUG9QYWdlTG9naW5SZWNvdmVyeSB8IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9yZWdpc3RlclVybDogc3RyaW5nO1xuICBwcml2YXRlIF9zdXBwb3J0OiBzdHJpbmcgfCBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VzTGlzdDogQXJyYXk8UG9MYW5ndWFnZT47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQW8gaW5mb3JtYXIgdW0gdmFsb3IgZG8gdGlwbyBgc3RyaW5nYCwgbyBtZXNtbyBzZXLDoSBhcGxpY2FkbyBjb21vIGEgY2hhdmUgZG8gY2FtcG8gY3VzdG9taXphZG8gZSB1dGlsaXphcsOhXG4gICAqIG9zIHZhbG9yZXMgcGFkcsO1ZXMgY29udGlkb3MgbmEgcHJvcHJpZWRhZGUgYGxpdGVyYWxzYCBjb21vIGBjdXN0b21GaWVsZEVycm9yUGF0dGVybmAgZSBgY3VzdG9tRmllbGRQbGFjZWhvbGRlcmAuXG4gICAqXG4gICAqIEV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgaW5mb3JtYXIgdW0gb2JqZXRvIHF1ZSBzZWd1ZSBhIGRlZmluacOnw6NvIGRhIGludGVyZmFjZSBgUG9QYWdlTG9naW5DdXN0b21GaWVsZGAsIG9uZGVcbiAgICogYXRyYXbDqXMgZG9zIHBhcsOibWV0cm9zIGVudmlhZG9zIHBvZGUgZ2VyYXIgdW0gYHBvLWlucHV0YCwgYHBvLWNvbWJvYCBlc3BlY2lmaWNhbWVudGUgcGFyYSBzZXJ2acOnb3NcbiAgICogb3UgYHBvLXNlbGVjdGAgcGFyYSB2YWxvcmVzIGZpeG9zLlxuICAgKlxuICAgKiBBYmFpeG8gc2VndWVtIG9zIGV4ZW1wbG9zIGRlIGNhZGEgdGlwbyBkZSBjYW1wby5cbiAgICpcbiAgICogYHBvLWlucHV0YDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBwcm9wZXJ0eTogJ2RvbWFpbicsXG4gICAqICAgdmFsdWU6ICdqdjAxJyxcbiAgICogICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgZG9tYWluJyxcbiAgICogICBwYXR0ZXJuOiAnW2Etel0nLFxuICAgKiAgIGVycm9yUGF0dGVybjogJ0ludmFsaWQgdmFsdWUnXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIGBwby1jb21ib2A6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgcHJvcGVydHk6ICdkb21haW4nLFxuICAgKiAgIHZhbHVlOiAnanYwMScsXG4gICAqICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGRvbWFpbicsXG4gICAqICAgdXJsOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL2NvbWJvT3B0aW9uL2RvbWFpbnMnLFxuICAgKiAgIGZpZWxkVmFsdWU6ICduaWNrbmFtZSdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogYHBvLXNlbGVjdGA6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgcHJvcGVydHk6ICdkb21haW4nLFxuICAgKiAgIHZhbHVlOiAnanYwMScsXG4gICAqICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGRvbWFpbicsXG4gICAqICAgb3B0aW9uczogW3tsYWJlbDogJ0RvbWFpbiAxJywgdmFsdWU6ICcxJ30sIHtsYWJlbDogJ0RvbWFpbiAyJywgdmFsdWU6ICcyJ31dXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gbyBjdXN0b21GaWVsZCBwb3NzdWEgb3B0aW9ucywgdXJsIGUgZmllbGRWYWx1ZSBwcmVlbmNoaWRvcywgc2Vyw6EgcHJpb3JpemFkbyBvIHBvLXNlbGVjdFxuICAgKiB1dGlsaXphbmRvIG8gb3B0aW9ucy5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1jdXN0b20tZmllbGQnKSBzZXQgY3VzdG9tRmllbGQodmFsdWU6IHN0cmluZyB8IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmIChpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gJ2lucHV0JztcbiAgICAgICAgdGhpcy5fY3VzdG9tRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZE9iamVjdCA9IHRoaXMuZ2V0RGVmYXVsdEN1c3RvbUZpZWxkT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNUeXBlb2YodmFsdWUsICdvYmplY3QnKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWVbJ3Byb3BlcnR5J10pIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZE9iamVjdCA9IDxQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkPnZhbHVlO1xuXG4gICAgICAgIGlmICghdGhpcy5jdXN0b21GaWVsZE9iamVjdC5vcHRpb25zICYmICF0aGlzLmN1c3RvbUZpZWxkT2JqZWN0LnVybCkge1xuICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gJ2lucHV0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkVHlwZSA9IHRoaXMuY3VzdG9tRmllbGRPYmplY3Qub3B0aW9ucyA/ICdzZWxlY3QnIDogJ2NvbWJvJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jdXN0b21GaWVsZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1c3RvbUZpZWxkT2JqZWN0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGN1c3RvbUZpZWxkKCk6IHN0cmluZyB8IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21GaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcnNvbmFsaXphIG8gZS1tYWlsIHF1ZSDDqSBleGliaWRvIG5hIG1lbnNhZ2VtIGRlIGRpY2EgZGUgbG9naW4gcGFkcsOjbyBwYXJhIGNvbnRhdG8gZGUgc3Vwb3J0ZS5cbiAgICovXG4gIEBJbnB1dCgncC1jb250YWN0LWVtYWlsJykgc2V0IGNvbnRhY3RFbWFpbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGFjdEVtYWlsID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbnRhY3RFbWFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFjdEVtYWlsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gY3VzdG9taXphZG8gcXVlIGZpY2EgZW50cmUgYSBsb2dvIGUgYSBtZW5zYWdlbSBkZSBib2FzLXZpbmRhcy5cbiAgICovXG4gIEBJbnB1dCgncC1wcm9kdWN0LW5hbWUnKSBzZXQgcHJvZHVjdE5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3Byb2R1Y3ROYW1lID0gdmFsdWU7XG4gIH1cbiAgZ2V0IHByb2R1Y3ROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9kdWN0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkaWNpb25hIHVtYSBgdGFnYCBhYmFpeG8gZG8gdMOtdHVsbyBxdWUgZXNwZWNpZmljYSBvIGFtYmllbnRlIHF1ZSBvIHVzdcOhcmlvIGVzdMOhIGZhemVuZG8gbyBsb2dpbi5cbiAgICpcbiAgICogPiBFc3NhIHByb3ByaWVkYWRlIGxpbWl0YSBvIHRleHRvIGVtIDQwIGNhcmFjdGVyZXMuXG4gICAqL1xuICBASW5wdXQoJ3AtZW52aXJvbm1lbnQnKSBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5sZW5ndGggPiBwb1BhZ2VMb2dpbkNvbnRlbnRNYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQuc3Vic3RyaW5nKDAsIHBvUGFnZUxvZ2luQ29udGVudE1heExlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfVxuICB9XG4gIGdldCBlbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeGliZSB1bSBhdmlzbyBkZSBibG9xdWVpbyBkZSBhY29yZG8gY29tIGEgcXVhbnRpZGFkZSByZXN0YW50ZSBkZSB0ZW50YXRpdmFzLlxuICAgKiBPIGF2aXNvIHNlcsOhIGV4aWJpZG8gc29tZW50ZSBzZSBhIHF1YW50aWRhZGUgZm9yIG1haW9yIHF1ZSB6ZXJvLlxuICAgKlxuICAgKiA+IENhc28gdGVuaGEgYWxndW0gdmFsb3IgYXRyaWJ1w61kbyBwYXJhIG8gYXRyaWJ1dG8gYHAtYXV0aGVudGljYXRpb24tdXJsYCBlIG8gcmV0b3JubyBkYSByZXF1aXNpw6fDo28gZXN0aXZlciBhdHJpYnVpbmRvIHZhbG9yXG4gICAqIHBhcmEgbyBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCwgbyB2YWxvciBjb25zaWRlcmFkbyBzZXLDoSBvIGRvIHJldG9ybm8gZGEgcmVxdWlzacOnw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nJykgc2V0IGV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGNvbnZlcnRUb0ludCh2YWx1ZSk7XG4gICAgdGhpcy5zaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID4gMDtcbiAgfVxuXG4gIGdldCBleGNlZWRlZEF0dGVtcHRzV2FybmluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leGNlZWRlZEF0dGVtcHRzV2FybmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVzY29uZGUgYSBmdW7Dp8OjbyBcIkxlbWJyYXIgdXN1w6FyaW9cIiBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbi5cbiAgICpcbiAgICogUXVhbmRvIGVzc2EgcHJvcHJpZWRhZGUgw6kgc2V0YWRhIGNvbSBgdHJ1ZWAgYSBwcm9wcmllZGFkZSBgcmVtZW1iZXJVc2VyYCBlbnZpYWRhIG5vIGV2ZW50byBgcC1sb2dpbi1zdWJtaXRgIHNlcsOhIHNlbXByZVxuICAgKiBgZmFsc2VgLlxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcmVtZW1iZXJVc2VyYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtcmVtZW1iZXItdXNlcicpIHNldCBoaWRlUmVtZW1iZXJVc2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZVJlbWVtYmVyVXNlciA9IDxhbnk+dmFsdWUgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2hpZGVSZW1lbWJlclVzZXIpIHtcbiAgICAgIHRoaXMucmVtZW1iZXJVc2VyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGdldCBoaWRlUmVtZW1iZXJVc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlUmVtZW1iZXJVc2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtbG9naW5gLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzID0ge1xuICAgKiAgICBhdHRlbXB0czogJ3swfSB2ZXooZXMpICcsXG4gICAqICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzogJ01lbGhvciBjcmlhciB1bWEgc2VuaGEgbm92YSBhZ29yYSEgVm9jw6ogdmFpIHBvZGVyIGVudHJhciBubyBzaXN0ZW1hIGxvZ28gZW0gc2VndWlkYS4nLFxuICAgKiAgICBmb3Jnb3RQYXNzd29yZDogJ0VzcXVlY2V1IHN1YSBzZW5oYT8nLFxuICAgKiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdFc3F1ZWNldSBzdWEgc2VuaGE/JyxcbiAgICogICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAqICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnRXNxdWVjaSBtaW5oYSBzZW5oYScsXG4gICAqICAgIGlmWW91VHJ5SGFyZGVyOiAnU2UgdGVudGFyIG1haXMgJyxcbiAgICogICAgd2VsY29tZTogJ0JvYXMtdmluZGFzJyxcbiAgICogICAgbG9naW5FcnJvclBhdHRlcm46ICdMb2dpbiBvYnJpZ2F0w7NyaW8nLFxuICAgKiAgICBsb2dpbkhpbnQ6ICdDYXNvIG7Do28gcG9zc3VhIHVzdcOhcmlvIGVudHJlIGVtIGNvbnRhdG8gY29tIG8gc3Vwb3J0ZScsXG4gICAqICAgIGxvZ2luTGFiZWw6ICdJbnNpcmEgc2V1IHVzdcOhcmlvJyxcbiAgICogICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgdXN1w6FyaW8gZGUgYWNlc3NvJyxcbiAgICogICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdTZW5oYSBvYnJpZ2F0w7NyaWEnLFxuICAgKiAgICBwYXNzd29yZExhYmVsOiAnSW5zaXJhIHN1YSBzZW5oYScsXG4gICAqICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNpcmEgc3VhIHNlbmhhIGRlIGFjZXNzbycsXG4gICAqICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnQ2FtcG8gY3VzdG9taXphZG8gaW52w6FsaWRvJyxcbiAgICogICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ1BvciBmYXZvciBpbnNpcmEgdW0gdmFsb3InLFxuICAgKiAgICByZWdpc3RlclVybDogJ05vdm8gcmVnaXN0cm8nLFxuICAgKiAgICByZW1lbWJlclVzZXI6ICdMZW1icmFyIHVzdcOhcmlvJyxcbiAgICogICAgcmVtZW1iZXJVc2VySGludDogJ0VzdGEgb3DDp8OjbyBwb2RlIHNlciBkZXNhYmlsaXRhZGEgbmFzIGNvbmZpZ3VyYcOnw7VlcyBkbyBzaXN0ZW1hJyxcbiAgICogICAgc3VibWl0TGFiZWw6ICdBY2Vzc2FyIHNpc3RlbWEnLFxuICAgKiAgICBzdWJtaXR0ZWRMYWJlbDogJ0NhcnJlZ2FuZG8uLi4nLFxuICAgKiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICogICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAnc2VtIHN1Y2Vzc28gc2V1IHVzdcOhcmlvIHNlcsOhIGJsb3F1ZWFkbyBlIHZvY8OqIGZpY2EgMjQgaG9yYXMgc2VtIHBvZGVyIGFjZXNzYXIgOignXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlTG9naW5MaXRlcmFscyA9IHtcbiAgICogICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgdXN1w6FyaW8gZGUgYWNlc3NvJyxcbiAgICogICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2lyYSBzdWEgc2VuaGEgZGUgYWNlc3NvJyxcbiAgICogICAgc3VibWl0TGFiZWw6ICdBY2Vzc2FyIHNpc3RlbWEnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWxvZ2luXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1wYWdlLWxvZ2luPlxuICAgKiBgYGBcbiAgICpcbiAgICogID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkbyBicm93c2VyIChwdCwgZW4sIGVzKS5cbiAgICogID4gw4kgdGFtYsOpbSBwb3Nzw612ZWwgYWx0ZXJuYXIgbyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBhdHJhdsOpcyBkbyBzZWxldG9yIGRlIGlkaW9tYXMgbG9jYWxpemFkbyBuYSBwYXJ0ZSBpbmZlcmlvciBkbyB0ZW1wbGF0ZSxcbiAgICogbmVzc2UgY2FzbywgaMOhIHRhbWLDqW0gYSBvcMOnw6NvIGRvIGlkaW9tYSBydXNzby5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9QYWdlTG9naW5MaXRlcmFscykge1xuICAgIHRoaXMuX2xpdGVyYWxzID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgdW0gZXN0YWRvIGRlIGNhcnJlZ2FtZW50byBhbyBib3TDo28gZGUgKmxvZ2luKi5cbiAgICpcbiAgICogPiDDiSBuZWNlc3PDoXJpbyBhdHJpYnVpciBgdHJ1ZWAgw6AgZXN0YSBwcm9wcmllZGFkZSBuYSBmdW7Dp8OjbyBkZWZpbmlkYSBlbSBgcC1sb2dpbi1zdWJtaXRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZGluZycpIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbG9hZGluZyA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBWYWxvciBkbyBtb2RlbG8gZG8gY2FtcG8gZGUgbG9naW4uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4nKSBzZXQgbG9naW4odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvZ2luID0gdmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMubG9naW5DaGFuZ2UuZW1pdCh0aGlzLl9sb2dpbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxvZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRyaWJ1dG8gcXVlIHJlY2ViZSB1bWEgbGlzdGEgZGUgZXJyb3MgZSBleGliZSBhYmFpeG8gZG8gY2FtcG8gZGUgbG9naW4uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4tZXJyb3JzJykgc2V0IGxvZ2luRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fbG9naW5FcnJvcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMuX2xvZ2luRXJyb3JzKTtcbiAgfVxuICBnZXQgbG9naW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luRXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRyaWJ1dG8gcXVlIHJlY2ViZSB1bWEgbGlzdGEgZGUgZXJyb3MgZSBleGliZSBhYmFpeG8gZG8gY2FtcG8gZGUgcGFzc3dvcmQuXG4gICAqL1xuICBASW5wdXQoJ3AtcGFzc3dvcmQtZXJyb3JzJykgc2V0IHBhc3N3b3JkRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fcGFzc3dvcmRFcnJvcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNldFBhc3N3b3JkRXJyb3JzKHRoaXMuX3Bhc3N3b3JkRXJyb3JzKTtcbiAgfVxuICBnZXQgcGFzc3dvcmRFcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bhc3N3b3JkRXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhpYmUgdW0gbGluayBhYmFpeG8gZG8gZm9ybXVsw6FyaW8gZGUgbG9naW4gcGFyYSBxdWUgb3MgdXN1w6FyaW9zIGRhIGFwbGljYcOnw6NvIGZhw6dhbSBhIHJlY3VwZXJhw6fDo28gZG9zIGRhZG9zIGRlIGF1dGVudGljYcOnw6NvLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqXG4gICAqIC0gKipTdHJpbmcqKjogaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYTtcbiAgICogLSAqKkZ1bmN0aW9uKio6IHBvZGUtc2UgY3VzdG9taXphciBhIGHDp8Ojby4gUGFyYSBlc3RhIHBvc3NpbGlkYWRlIGJhc3RhIGF0cmlidWlyOlxuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW4+XG4gICAqICAgW3JlY292ZXJ5XT1cInRoaXMubXlSZWNvdmVyeS5iaW5kKHRoaXMpXCI+XG4gICAqIDwvcG8tcGFnZS1sb2dpbj5cbiAgICogYGBgXG4gICAqXG4gICAqIC0gKipQb1BhZ2VMb2dpblJlY292ZXJ5Kio6IGNyaWEtc2UgdsOtbmN1bG8gYXV0b23DoXRpY28gY29tIG8gdGVtcGxhdGUgKipwby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeSoqLlxuICAgKiAgIE8gb2JqZXRvIGRldmUgY29udGVyIGEgKip1cmwqKiBwYXJhIHJlcXVpc2nDp8OjbyBkb3MgcmVjdXJzb3MgZSBwb2RlLXNlIGRlZmluaXIgbyAqKnRpcG8qKiBkZSBtb2RhbCBwYXJhIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEsXG4gICAqICAgKiplbWFpbCoqIHBhcmEgY29udGF0byBlICoqbcOhc2NhcmEqKiBkbyBjYW1wbyBkZSB0ZWxlZm9uZS5cbiAgICovXG4gIEBJbnB1dCgncC1yZWNvdmVyeScpIHNldCByZWNvdmVyeSh2YWx1ZTogc3RyaW5nIHwgRnVuY3Rpb24gfCBQb1BhZ2VMb2dpblJlY292ZXJ5KSB7XG4gICAgdGhpcy5fcmVjb3ZlcnkgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCByZWNvdmVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYXNvIGEgYXBsaWNhw6fDo28gdGVuaGEgdW0gbGluayBwYXJhIG5vdm9zIGNhZGFzdHJvcywgaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYSwgZGVzc2FcbiAgICogZm9ybWEgc2Vyw6EgZXhpYmlkbyB1bSBsaW5rIGFiYWl4byBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiBwYXJhIG9zIHVzdcOhcmlvcyBkYSBhcGxpY2HDp8Ojby5cbiAgICpcbiAgICogRXhlbXBsb3MgZGUgdmFsb3JlcyB2w6FsaWRvczpcbiAgICogLSAqKmxvY2FsKio6IGAvaG9tZWBcbiAgICogLSAqKnVybCBleHRlcm5hKio6IGBodHRwczovL3BvLXVpLmlvYFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcmVnaXN0ZXJVcmxgLlxuICAgKi9cbiAgQElucHV0KCdwLXJlZ2lzdGVyLXVybCcpIHNldCByZWdpc3RlclVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVnaXN0ZXJVcmwgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgcmVnaXN0ZXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0ZXJVcmw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBdHJpYnV0byBxdWUgcmVjZWJlIG8gdGlwbyBkZSBlc3F1ZW1hIGRhIGF1dGVudGljYcOnw6NvLCBzZW5kbyBzdXBvcnRhZG9zIGFwZW5hcyBvcyB2YWxvcmVzIGBCYXNpY2AgZSBgQmVhcmVyYC5cbiAgICpcbiAgICogPiBDYXNvIG8gdGlwbyBkZWZpbmlkbyBzZWphIGBCYXNpY2AsIG8gY29tcG9uZW50ZSBmYXLDoSB1bWEgcmVxdWlzacOnw6NvIGBQT1NUYCBjb250ZW5kbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGhlYWRlcnMge1xuICAgKiAgQXV0aG9yaXphdGlvbjogQmFzaWMgYmFzZTY0KGxvZ2luOnBhc3N3b3JkKVxuICAgKiB9XG4gICAqXG4gICAqIGJvZHkge1xuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBDYXNvIG8gdGlwbyBkZWZpbmlkbyBzZWphIGBCZWFyZXJgLCBvIGNvbXBvbmVudGUgZmFyw6EgdW1hIHJlcXVpc2nDp8OjbyBgUE9TVGAgY29udGVuZG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBib2R5IHtcbiAgICogIGxvZ2luOiBsb2dpbixcbiAgICogIHBhc3N3b3JkOiBiYXNlNjQocGFzc3dvcmQpLFxuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgYFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlLkJhc2ljYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dGhlbnRpY2F0aW9uLXR5cGUnKSBzZXQgYXV0aGVudGljYXRpb25UeXBlKHZhbHVlOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSkge1xuICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uVHlwZSA9ICg8YW55Pk9iamVjdCkudmFsdWVzKFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlKS5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gdmFsdWVcbiAgICAgIDogUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUuQmFzaWM7XG4gIH1cblxuICBnZXQgYXV0aGVudGljYXRpb25UeXBlKCk6IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRW5kcG9pbnQgdXNhZG8gcGVsbyB0ZW1wbGF0ZSBwYXJhIHJlcXVpc2nDp8OjbyBkbyByZWN1cnNvLiBRdWFuZG8gcHJlZW5jaGlkbywgbyBtw6l0b2RvIGBwLWxvZ2luLXN1Ym1pdGAgc2Vyw6EgaWdub3JhZG8gZSBvXG4gICAqIGNvbXBvbmVudGUgYWRxdWlyaXLDoSBhdXRvbWF0aXphw6fDo28gcGFyYSBvIHByb2Nlc3NvIGRlIGF1dGVudGljYcOnw6NvLlxuICAgKlxuICAgKiAjIyMgUHJvY2Vzc29zXG4gICAqIEFvIGRpZ2l0YXIgdW0gdmFsb3IgdsOhbGlkbyBubyBjYW1wbyBkZSBsb2dpbi9wYXNzd29yZCBlIHByZXNzaW9uYXIgKipFbnRlcioqLCBvIGNvbXBvbmVudGUgZmFyw6EgdW1hIHJlcXVpc2nDp8OjbyBgUE9TVGBcbiAgICogbmEgdXJsIGVzcGVjaWZpY2FkYSBuZXN0YSBwcm9wcmllZGFkZSBwYXNzYW5kbyBvIG9iamV0byBjb250ZW5kbyBvIHZhbG9yIGRlZmluaWRvIHBlbG8gdXN1w6FyaW86XG4gICAqXG4gICAqIGBgYFxuICAgKiBoZWFkZXJzIHtcbiAgICogIEF1dGhvcml6YXRpb246IEJhc2ljIGJhc2U2NChsb2dpbjpwYXNzd29yZClcbiAgICogfVxuICAgKlxuICAgKiBib2R5IHtcbiAgICogIHJlbWVtYmVyVXNlcjogcmVtZW1iZXJVc2VyXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEVtIGNhc28gZGUgKipzdWNlc3NvKiosIG8gb2JqZXRvIGRlIHJldG9ybm8gw6kgYXJtYXplbmFkbyBubyBgc2Vzc2lvblN0b3JhZ2VgIGUgbyB1c3XDoXJpbyDDqSByZWRpcmVjaW9uYWRvIHBhcmEgYSBww6FnaW5hIGluaWNpYWwgZGFcbiAgICogYXBsaWNhw6fDo28gYC9gLlxuICAgKlxuICAgKiBgYGBcbiAgICogMjAwOlxuICAgKiAge1xuICAgKiAgICB1c2VyOiB1c2VyXG4gICAqICB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBFbSBjYXNvIGRlICoqZXJybyoqIG5hIGF1dGVudGljYcOnw6NvLCBlc3BlcmEtc2UgbyBzZWd1aW50ZSByZXRvcm5vOlxuICAgKlxuICAgKiBgYGBcbiAgICogNDAwLzQwMVxuICAgKiAge1xuICAgKiAgICBjb2RlOiA0MDAvNDAxLFxuICAgKiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgKiAgICBkZXRhaWxlZE1lc3NhZ2U6IGRldGFpbGVkTWVzc2FnZSxcbiAgICogICAgaGVscFVybD86IGhlbHBVcmxcbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqID4gUG9kZS1zZSBhdHJpYnVpciB1bWEgcXVhbnRpZGFkZSBtw6F4aW1hIGRlIHRlbnRhdGl2YXMgcmVzdGFudGVzIChtYXhBdHRlbXB0c1JlbWFpbmluZykgcGFyYSBvIGF0cmlidXRvIGBwLWV4Y2VlZGVkLWF0dGVtcHRzLXdhcm5pbmdgLFxuICAgKiBhc3NpbSBjb21vIG9zIGF2aXNvcyByZWxhY2lvbmFkb3MgYW9zIGNhbXBvcyBsb2dpbiBlIHBhc3N3b3JkIChsb2dpbldhcm5pbmdzLCBwYXNzd29yZFdhcm5pbmdzKSBwYXJhIG9zIGF0cmlidXRvcyBgcC1sb2dpbi1lcnJvcnNgIGVcbiAgICogYHAtcGFzc3dvcmQtZXJyb3JzYCBjb25mb3JtZSByZXRvcm5vIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIDQwMFxuICAgKiAge1xuICAgKiAgICBjb2RlOiA0MDAvNDAxLFxuICAgKiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgKiAgICBkZXRhaWxlZE1lc3NhZ2U6IGRldGFpbGVkTWVzc2FnZSxcbiAgICogICAgaGVscFVybD86IGhlbHBVcmwsXG4gICAqICAgIG1heEF0dGVtcHRzUmVtYWluaW5nPzogbWF4QXR0ZW1wdHNSZW1haW5pbmcsXG4gICAqICAgIGxvZ2luV2FybmluZ3M/OiBbbG9naW5XYXJuaW5nc10sXG4gICAqICAgIHBhc3N3b3JkV2FybmluZ3M/OiBbcGFzc3dvcmRXYXJuaW5nc11cbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqID4gQ2FzbyBvIHZhbG9yIGF0cmlidcOtZG8gcGFyYSBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCBzZWphIGlndWFsIGEgMCh6ZXJvKSwgcG9kZXLDoSBzZXIgcGFzc2FkbyB1bSB2YWxvciBwYXJhIG9cbiAgICogYXRyaWJ1dG8gYHAtYmxvY2tlZC11cmxgIGUgbyB1c3XDoXJpbyBzZXLDoSByZWRpcmVjaW9uYWRvIHBhcmEgdW1hIHRlbGEgZGUgYmxvcXVlaW8uXG4gICAqXG4gICAqICpQcm9jZXNzbyBmaW5hbGl6YWRvLipcbiAgICpcbiAgICogX19fX19fX19fX19fX19fXG4gICAqXG4gICAqICMjIyMgUHJhdGljaWRhZGVcbiAgICogQXMgaW5mb3JtYcOnw7VlcyBkbyBzZXJ2acOnbyBkZSBhdXRlbnRpY2HDp8OjbyB0YW1iw6ltIHBvZGVtIHNlciB0cmFuc21pdGlkYXMgZGlyZXRhbWVudGUgcGVsYXMgY29uZmlndXJhw6fDo29zIGRlIHJvdGEgZSwgZGVzdGEgbWFuZWlyYSxcbiAgICogZGlzcGVuc2Etc2UgcXVhbHF1ZXIgbWVuw6fDo28gZS9vdSBpbXBvcnRhw6fDo28gZG8gY29tcG9uZW50ZSBgcG8tcGFnZS1sb2dpbmAgbm8gcmVzdGFudGUgZGEgYXBsaWNhw6fDo28uIE8gZXhlbXBsbyBhYmFpeG8gZXhlbXBsaWZpY2FcbiAgICogYSBmb3JtYSBkaW7Dom1pY2EgY29tIGEgcXVhbCBvIHRlbXBsYXRlIGRlIHRlbGEgZGUgbG9naW4gcG9kZSBzZXIgZ2VyYWRvIGFvIG5hdmVnYXIgcGFyYSByb3RhIGAvbG9naW5gLCBlIHRhbWLDqW0gY29tbyBlbGUgc2UgY29tdW5pY2FcbiAgICogY29tIG8gc2VydmnDp28gcGFyYSBlZmV0dWHDp8OjbyBkbyBwcm9jZXNzbyBkZSBhdXRlbnRpY2HDp8OjbyBkbyB1c3XDoXJpbyBlIHNvbGljaXRhw6fDo28gZGUgbm92YSBzZW5oYS5cbiAgICogQmFzdGEgZGVmaW5pciBuYXMgY29uZmlndXJhw6fDtWVzIGRlIHJvdGE6XG4gICAqXG4gICAqXG4gICAqIGBgYFxuICAgKiAgIGltcG9ydCB7IFBvUGFnZUxvZ2luQ29tcG9uZW50LCBQb1BhZ2VMb2dpbkF0aGVudGljYXRpb25UeXBlIH0gZnJvbSAnQHBvLXVpL25nLXRlbXBsYXRlcyc7XG4gICAqXG4gICAqICAgLi4uXG4gICAqICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAqICAgICB7XG4gICAqICAgICAgIHBhdGg6ICdsb2dpbicsIGNvbXBvbmVudDogUG9QYWdlTG9naW5Db21wb25lbnQsIGRhdGE6IHtcbiAgICogICAgICAgICBzZXJ2aWNlQXBpOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL3VzZXJzL2F1dGhlbnRpY2F0aW9uJyxcbiAgICogICAgICAgICBlbnZpcm9ubWVudDogJ2RldmVsb3BtZW50JyxcbiAgICogICAgICAgICByZWNvdmVyeToge1xuICAgKiAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL3VzZXJzJyxcbiAgICogICAgICAgICAgIHR5cGU6IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5VHlwZS5BbGwsXG4gICAqICAgICAgICAgICBjb250YWN0TWFpbDogJ2Rldi5wb0Bwby11aS5jb20nLFxuICAgKiAgICAgICAgICAgcGhvbmVNYXNrOiAnOS05OTktOTk5LTk5OTknXG4gICAqICAgICAgICAgfSxcbiAgICogICAgICAgICByZWdpc3RlclVybDogJy9uZXctcGFzc3dvcmQnLFxuICAgKiAgICAgICAgIGF1dGhlbnRpY2F0aW9uVHlwZTogUG9QYWdlTG9naW5BdGhlbnRpY2F0aW9uVHlwZS5CYXNpY1xuICAgKiAgICAgICB9XG4gICAqICAgICB9XG4gICAqICAgICAuLi5cbiAgICogICBdO1xuICAgKlxuICAgKiAgIEBOZ01vZHVsZSh7XG4gICAqICAgICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzKV0sXG4gICAqICAgICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxuICAgKiAgIH0pXG4gICAqICAgZXhwb3J0IGNsYXNzIEFwcFJvdXRpbmdNb2R1bGUgeyB9XG4gICAqIGBgYFxuICAgKlxuICAgKlxuICAgKiBPIG1ldGFkYWRvIGBzZXJ2aWNlQXBpYCBkZXZlIHNlciBhICoqdXJsKiogcGFyYSByZXF1aXNpw6fDo28gZG9zIHJlY3Vyc29zIGRlIGF1dGVudGljYcOnw6NvLCBvIGBlbnZpcm9ubWVudGAgYWxpbWVudGEgYSBwcm9wcmllZGFkZVxuICAgKiBgcC1lbnZpcm9ubWVudGAsIGByZWNvdmVyeWAgw6kgYSBpbnRlcmZhY2UgYFBvUGFnZUxvZ2luUmVjb3ZlcnlgIHJlc3BvbnPDoXZlbCBwZWxhcyBlc3BlY2lmaWNhw6fDtWVzIGNvbnRpZGFzIG5hIG1vZGFsIGRlIHJlY3VwZXJhw6fDo28gZGVcbiAgICogc2VuaGEsIGByZWdpc3RlclVybGAgYWxpbWVudGEgYSBwcm9wcmllZGFkZSBgcC1yZWdpc3Rlci11cmxgIGUgYGF1dGhlbnRpY2F0aW9uVHlwZWAgcXVlIGRlZmluZSBhIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXR5cGVgLlxuICAgKlxuICAgKiA+IMOJIGVzc2VuY2lhbCBxdWUgc2lnYSBhIG5vbWVuY2xhdHVyYSBkb3MgYXRyaWJ1dG9zIGV4ZW1wbGlmaWNhZG9zIGFjaW1hIHBhcmEgc3VhIGVmZXRpdmEgZnVuY2lvbmFsaWRhZGUuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0aGVudGljYXRpb24tdXJsJykgc2V0IGF1dGhlbnRpY2F0aW9uVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hdXRoZW50aWNhdGlvblVybCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBhdXRoZW50aWNhdGlvblVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvblVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhc28gbyB2YWxvciBhdHJpYnXDrWRvIHBhcmEgYHAtZXhjZWVkZWQtYXR0ZW1wdHMtd2FybmluZ2Agc2VqYSBpZ3VhbCBhIDAoemVybykgZSBhIGFwbGljYcOnw6NvIHRlbmhhIHVtIGxpbmsgZGUgYmxvcXVlaW8gZGUgdXN1w6FyaW8sXG4gICAqIGluZm9ybWUgdW1hIHVybCBleHRlcm5hIG91IHVtYSByb3RhIHbDoWxpZGEsIGRlc3NhIGZvcm1hIGVtIGNhc28gZGUgYmxvcXVlaW8gbyB1c3XDoXJpbyBzZXLDoSByZWRpcmVjaW9uYWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWJsb2NrZWQtdXJsJykgc2V0IGJsb2NrZWRVcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Jsb2NrZWRVcmwgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYmxvY2tlZFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja2VkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhpYmUgdW0gYm90w6NvIHBhcmEgc3Vwb3J0ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKlxuICAgKiAtICoqU3RyaW5nKio6IFVSTCBleHRlcm5hIG91IHVtYSByb3RhIHbDoWxpZGE7XG4gICAqIC0gKipGdW5jdGlvbioqOiBGdW7Dp8OjbyBhIHNlciBkaXNwYXJhZGEgYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSBzdXBvcnRlO1xuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW4+XG4gICAqICAgW3Atc3VwcG9ydF09XCJ0aGlzLm15U3VwcG9ydC5iaW5kKHRoaXMpXCI+XG4gICAqIDwvcG8tcGFnZS1sb2dpbj5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3Atc3VwcG9ydCcpIHNldCBzdXBwb3J0KHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbikge1xuICAgIHRoaXMuX3N1cHBvcnQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdXBwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ29sZcOnw6NvIGRlIGlkaW9tYXMgcXVlIG8gY29tcG9uZW50ZSBpcsOhIHRyYXRhciBlIGRpc3BvbmliaWxpemFyw6EgcGFyYSBvIHVzdcOhcmlvIGVzY29saGVyLlxuICAgKlxuICAgKiBDYXNvIGVzc2EgcHJvcHJpZWRhZGUgbsOjbyBzZWphIHV0aWxpemFkYSBvIGNvbXBvbmVudGUgbW9zdHJhcsOhIG5vIGNvbWJvIG9zIGlkaW9tYXMgcXVlIGVsZSBzdXBvcnRhIHBvciBwYWRyw6NvLlxuICAgKlxuICAgKiBDYXNvIGEgY29sZcOnw6NvIHRlbmhhIHVtIGlkaW9tYSwgYSBww6FnaW5hIGVzdGFyw6EgbmVzc2UgaWRpb21hIGUgbsOjbyBtb3N0cmFyw6EgbyBjb21iby5cbiAgICpcbiAgICogQ2FzbyBzZWphIHBhc3NhZG8gdW0gYXJyYXkgdmF6aW8sIGEgcMOhZ2luYSB0ZXLDoSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBgaTE4bmAgZSBuw6NvIG1vc3RyYXLDoSBvIGNvbWJvIGRlIHNlbGXDp8Ojby5cbiAgICpcbiAgICogPiBTZSBmb3IgcGFzc2FkbyB1bSBpZGlvbWEgbsOjbyBzdXBvcnRhZG8sIHNlcsOhIHByZWNpc28gcGFzc2FyIGFzIGxpdGVyYWlzIHBlbGEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWxhbmd1YWdlcycpIHNldCBsYW5ndWFnZXNMaXN0KGxhbmd1YWdlc0xpc3Q6IEFycmF5PFBvTGFuZ3VhZ2U+KSB7XG4gICAgaWYgKGxhbmd1YWdlc0xpc3QpIHtcbiAgICAgIGlmIChsYW5ndWFnZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9sYW5ndWFnZXNMaXN0ID0gbGFuZ3VhZ2VzTGlzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xhbmd1YWdlc0xpc3QgPSBwb0xhbmd1YWdlRGVmYXVsdC5maWx0ZXIobGFuZ3VhZ2UgPT4gbGFuZ3VhZ2UubGFuZ3VhZ2UgPT09IHRoaXMubGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBsYW5ndWFnZXNMaXN0KCk6IEFycmF5PFBvTGFuZ3VhZ2U+IHtcbiAgICBpZiAodGhpcy5fbGFuZ3VhZ2VzTGlzdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlc0xpc3Q7XG4gICAgfVxuICAgIHJldHVybiBwb0xhbmd1YWdlRGVmYXVsdDtcbiAgfVxuXG4gIGdldCBzaG93TGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VzTGlzdC5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSB8fCBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2dpbkxpdGVyYWxzKCk6IFBvUGFnZUxvZ2luTGl0ZXJhbHMge1xuICAgIGNvbnN0IGxvZ2luSGludFdpdGhDb250YWN0RW1haWwgPSB0aGlzLmNvbnRhY3RFbWFpbFxuICAgICAgPyB0aGlzLmNvbmNhdGVuYXRlTG9naW5IaW50V2l0aENvbnRhY3RFbWFpbCh0aGlzLmNvbnRhY3RFbWFpbClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAuLi5wb1BhZ2VMb2dpbkxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgIC4uLmxvZ2luSGludFdpdGhDb250YWN0RW1haWwsXG4gICAgICAuLi50aGlzLmxpdGVyYWxzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBQb1BhZ2VMb2dpblNlcnZpY2UsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gdGhpcy5wb0xhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5sb2dpblN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5sb2dpblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUG9wb3ZlcigpIHtcbiAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGZhbHNlO1xuICB9XG5cbiAgb25Mb2dpblN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBsb2dpbkZvcm06IFBvUGFnZUxvZ2luID0ge1xuICAgICAgbG9naW46IHRoaXMubG9naW4sXG4gICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcbiAgICAgIHJlbWVtYmVyVXNlcjogdGhpcy5yZW1lbWJlclVzZXJcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY3VzdG9tRmllbGQpIHtcbiAgICAgIGxvZ2luRm9ybVt0aGlzLmN1c3RvbUZpZWxkT2JqZWN0LnByb3BlcnR5XSA9IHRoaXMuY3VzdG9tRmllbGRPYmplY3QudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxvZ2luU3Vic2NyaXB0aW9uID0gdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLm9uTG9naW4odGhpcy5hdXRoZW50aWNhdGlvblVybCwgdGhpcy5hdXRoZW50aWNhdGlvblR5cGUsIGxvZ2luRm9ybSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBkYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzVG9Qcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdQT19VU0VSX0xPR0lOJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgdGhpcy5vcGVuSW50ZXJuYWxMaW5rKCcvJyk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlID09PSAnNDAwJyB8fCBlcnJvci5lcnJvci5jb2RlID09PSAnNDAxJykge1xuICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlc1RvUHJvcGVydGllcyhlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RCbG9ja2VkVXJsKHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcsIHRoaXMuYmxvY2tlZFVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9naW5TdWJtaXQuZW1pdChsb2dpbkZvcm0pO1xuICAgICAgdGhpcy5zaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID4gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDdXN0b21GaWVsZE9iamVjdChwcm9wZXJ0eSk6IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQge1xuICAgIHJldHVybiB7IHByb3BlcnR5IH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5FeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkludGVybmFsTGluayh1cmw6IHN0cmluZykge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RCbG9ja2VkVXJsKGF0dGVtcHRzOiBudW1iZXIsIGJsb2NrZWRVcmw6IHN0cmluZykge1xuICAgIGlmIChhdHRlbXB0cyA9PT0gMCAmJiBibG9ja2VkVXJsKSB7XG4gICAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGZhbHNlO1xuICAgICAgaXNFeHRlcm5hbExpbmsoYmxvY2tlZFVybCkgPyB0aGlzLm9wZW5FeHRlcm5hbExpbmsoYmxvY2tlZFVybCkgOiB0aGlzLm9wZW5JbnRlcm5hbExpbmsoYmxvY2tlZFVybCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZXNUb1Byb3BlcnRpZXMocmVzdWx0Pykge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSByZXN1bHQuZXJyb3IubWF4QXR0ZW1wdHNSZW1haW5pbmc7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gcmVzdWx0LmVycm9yLmxvZ2luV2FybmluZ3M7XG4gICAgICB0aGlzLnBhc3N3b3JkRXJyb3JzID0gcmVzdWx0LmVycm9yLnBhc3N3b3JkV2FybmluZ3M7XG4gICAgICB0aGlzLmJsb2NrZWRVcmwgPSByZXN1bHQuZXJyb3IuYmxvY2tlZFVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IDA7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gW107XG4gICAgICB0aGlzLnBhc3N3b3JkRXJyb3JzID0gW107XG4gICAgICB0aGlzLmJsb2NrZWRVcmwgPSAnJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29uY2F0ZW5hdGVMb2dpbkhpbnRXaXRoQ29udGFjdEVtYWlsKGNvbnRhY3RFbWFpbDogc3RyaW5nKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TG9naW5FcnJvcnModmFsdWU6IEFycmF5PHN0cmluZz4pOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRQYXNzd29yZEVycm9ycyh2YWx1ZTogQXJyYXk8c3RyaW5nPik6IHZvaWQ7XG59XG4iXX0=
|
|
1085
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1sb2dpbi9wby1wYWdlLWxvZ2luLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkgsT0FBTyxFQUFxQixlQUFlLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7QUFNL0YsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsRUFBRSxFQUF1QjtRQUN2QixLQUFLLEVBQUUsU0FBUztRQUNoQixpQkFBaUIsRUFBRSxlQUFlO1FBQ2xDLFNBQVMsRUFBRTt1REFDd0M7UUFDbkQsZ0JBQWdCLEVBQUUsb0JBQW9CO1FBQ3RDLG9CQUFvQixFQUFFLGtCQUFrQjtRQUN4QyxtQkFBbUIsRUFBRSxzQkFBc0I7UUFDM0MsdUJBQXVCLEVBQUUsZUFBZTtRQUN4QyxzQkFBc0IsRUFBRSxzQkFBc0I7UUFDOUMsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixnQkFBZ0IsRUFBRSxxREFBcUQ7UUFDdkUsV0FBVyxFQUFFLE9BQU87UUFDcEIsY0FBYyxFQUFFLFlBQVk7UUFDNUIsY0FBYyxFQUFFLHVCQUF1QjtRQUN2QyxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsY0FBYztR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QXRDLEtBQUs7bUJBQUMsZUFBZTtZQXVCb0IsdUJBQXVCO2tCQUFoRSxLQUFLO21CQUFDLDZCQUE2QjtZQXVCRCxnQkFBZ0I7a0JBQWxELEtBQUs7bUJBQUMsc0JBQXNCO1lBdUVKLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQW1CSyxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUFlSSxLQUFLO2tCQUExQixLQUFLO21CQUFDLFNBQVM7WUFtQmEsV0FBVztrQkFBdkMsS0FBSzttQkFBQyxnQkFBZ0I7WUFlUyxjQUFjO2tCQUE3QyxLQUFLO21CQUFDLG1CQUFtQjtZQTZCRCxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFzQlUsV0FBVztrQkFBdkMsS0FBSzttQkFBQyxnQkFBZ0I7WUF1Q2Esa0JBQWtCO2tCQUFyRCxLQUFLO21CQUFDLHVCQUF1QjtZQTJISyxpQkFBaUI7a0JBQW5ELEtBQUs7bUJBQUMsc0JBQXNCO1lBZ0JELFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQTBCRSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUF5QlEsYUFBYTtrQkFBdEMsS0FBSzttQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBjb252ZXJ0VG9JbnQsIGdldFNob3J0QnJvd3Nlckxhbmd1YWdlLCBpc0V4dGVybmFsTGluaywgaXNUeXBlb2YgfSBmcm9tICcuLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSwgcG9Mb2NhbGVEZWZhdWx0LCBQb0xhbmd1YWdlLCBwb0xhbmd1YWdlRGVmYXVsdCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUG9QYWdlTG9naW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUgfSBmcm9tICcuL2VudW1zL3BvLXBhZ2UtbG9naW4tYXV0aGVudGljYXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1jdXN0b20tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5SZWNvdmVyeSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWxvZ2luLXJlY292ZXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpblNlcnZpY2UgfSBmcm9tICcuL3BvLXBhZ2UtbG9naW4uc2VydmljZSc7XG5cbmNvbnN0IHBvUGFnZUxvZ2luQ29udGVudE1heExlbmd0aCA9IDQwO1xuXG5leHBvcnQgY29uc3QgcG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICdXZWxjb21lJyxcbiAgICBsb2dpbkVycm9yUGF0dGVybjogJ0ludmFsaWQgTG9naW4nLFxuICAgIGxvZ2luSGludDogYFlvdXIgbG9naW4gdXNlciB3YXMgZ2l2ZW4gdG8geW91IGF0IHlvdXIgZmlyc3QgZGF5LlxuICAgIElmIHlvdSBkb24ndCBoYXZlIHRoaXMgaW5mb3JtYXRpb24gY29udGFjdCBzdXBwb3J0YCxcbiAgICBsb2dpblBsYWNlaG9sZGVyOiAnSW5zZXJ0IHlvdXIgZS1tYWlsJyxcbiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ0ludmFsaWQgUGFzc3dvcmQnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNlcnQgeW91ciBwYXNzd29yZCcsXG4gICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICdJbnZhbGlkIHZhbHVlJyxcbiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAnUGxlYXNlIGVudGVyIGEgdmFsdWUnLFxuICAgIHJlbWVtYmVyVXNlcjogJ0F1dG9tYXRpYyBsb2dpbicsXG4gICAgcmVtZW1iZXJVc2VySGludDogJ1lvdSBjYW4gZGlzYWJsZSB0aGlzIG9wdGlvbiBpbiBzeXN0ZW0gY29uZmlndXJhdGlvbicsXG4gICAgc3VibWl0TGFiZWw6ICdFbnRlcicsXG4gICAgc3VibWl0dGVkTGFiZWw6ICdMb2FkaW5nLi4uJyxcbiAgICBmb3Jnb3RQYXNzd29yZDogJ0ZvcmdvdCB5b3VyIFBhc3N3b3JkPycsXG4gICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAgcmVnaXN0ZXJVcmw6ICdOZXcgcmVnaXN0ZXInLFxuICAgIHRpdGxlUG9wb3ZlcjogJ09vcHMhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdGb3Jnb3QgeW91ciBwYXNzd29yZD8nLFxuICAgIGlmWW91VHJ5SGFyZGVyOiAnSWYgeW91IHRyeSAnLFxuICAgIGF0dGVtcHRzOiAnezB9IG1vcmUgdGltZShzKSAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDpcbiAgICAgICd3aXRob3V0IHN1Y2Nlc3MgeW91ciB1c2VyIHdpbGwgYmUgYmxvY2tlZCBhbmQgeW91IHdpbGwgYmUgbGVmdCAyNCBob3VycyB3aXRob3V0IGJlaW5nIGFibGUgdG8gYWNjZXNzIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6ICdCZXR0ZXIgY3JlYXRlIGEgbmV3IHBhc3N3b3JkIG5vdyEgWW91IHdpbGwgYmUgYWJsZSB0byBsb2cgaW50byB0aGUgc3lzdGVtIHJpZ2h0IGF3YXkuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ0kgZm9yZ290IG15IHBhc3N3b3JkJyxcbiAgICB3ZWxjb21lOiAnV2VsY29tZScsXG4gICAgc3VwcG9ydDogJ1N1cHBvcnQnXG4gIH0sXG4gIGVzOiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICdCaWVudmVuaWRvJyxcbiAgICBsb2dpbkVycm9yUGF0dGVybjogJ0xvZ2luIGludsOhbGlkbycsXG4gICAgbG9naW5IaW50OiBgU3UgdXN1YXJpbyBoYSBzaWRvIGVudHJlZ2FkbyBwYXJhIHVzdGVkIGVuIHN1IHByaW1lciBkw61hLlxuICAgIFNpIG5vIHRpZW5lIGVzdGEgaW5mb3JtYWNpw7NuLCBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gZWwgc29wb3J0ZSB0w6ljbmljb2AsXG4gICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2VydGUgc3UgZS1tYWlsJyxcbiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ0NvbnRyYXNlw7FhIGludsOhbGlkYScsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2VydGUgc3UgY29udHJhc2XDsWEnLFxuICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnVmFsb3Igbm8gdsOhbGlkby4nLFxuICAgIGN1c3RvbUZpZWxkUGxhY2Vob2xkZXI6ICdQb3IgZmF2b3IgaW50cm9kdXpjYSB1biB2YWxvcicsXG4gICAgcmVtZW1iZXJVc2VyOiAnSW5pY2lvIGRlIHNlc2nDs24gYXV0b23DoXRpY2FtZW50ZScsXG4gICAgcmVtZW1iZXJVc2VySGludDogJ1B1ZWRlIGRlc2hhYmlsaXRhciBlc3RhIG9wY2nDs24gZW4gZWwgbWVuw7ogZGVsIHNpc3RlbWEuJyxcbiAgICBzdWJtaXRMYWJlbDogJ0VudHJhcicsXG4gICAgc3VibWl0dGVkTGFiZWw6ICdDYXJnYW5kby4uLicsXG4gICAgZm9yZ290UGFzc3dvcmQ6ICdPbHZpZGFzdGUgdHUgY29udHJhc2XDsWE/JyxcbiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICByZWdpc3RlclVybDogJ051ZXZvIHJlZ2lzdHJvJyxcbiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdPbHZpZGFzdGUgdHUgY29udHJhc2XDsWE/JyxcbiAgICBpZllvdVRyeUhhcmRlcjogJ1NpIGludGVudGEgbcOhcyAnLFxuICAgIGF0dGVtcHRzOiAnezB9IHZlei92ZWNlcyAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDogJ3NpbiDDqXhpdG8gc3UgdXN1YXJpbyBzZXJhIGJsb3F1ZWFkbyB5IHVzdGVkIHbDoXMgcGVybWFuZWNlciAyNCBob3JhcyBzaW4gcG9kZXIgYWNjZWRlciBhIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6XG4gICAgICAnwqFNZWpvciBjcmVhciB1bmEgbnVldmEgY29udHJhc2XDsWEgYWhvcmEhIFVzdGVkIHBvZHLDoSBlbnRyYXIgZW4gZWwgc2lzdGVtYSBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcy4nLFxuICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnT2x2aWRlIG1pIGNvbnRyYXNlw7FhJyxcbiAgICB3ZWxjb21lOiAnQmllbnZlbmlkbycsXG4gICAgc3VwcG9ydDogJ1NvcG9ydGUnXG4gIH0sXG4gIHB0OiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICdCZW0tdmluZG8nLFxuICAgIGxvZ2luRXJyb3JQYXR0ZXJuOiAnTG9naW4gaW52w6FsaWRvJyxcbiAgICBsb2dpbkhpbnQ6IGBTZXUgdXN1w6FyaW8gZm9pIGVudHJlZ3VlIGEgdm9jw6ogbm8gc2V1IHByaW1laXJvIGRpYS5cbiAgICBDYXNvIG7Do28gdGVuaGEgbWFpcyBlc3NhIGluZm9ybWHDp8OjbyBjb250YWN0ZSBvIHN1cG9ydGVgLFxuICAgIGxvZ2luUGxhY2Vob2xkZXI6ICdJbnNpcmEgc2V1IGUtbWFpbCcsXG4gICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdTZW5oYSBpbnbDoWxpZGEnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNpcmEgc3VhIHNlbmhhJyxcbiAgICBjdXN0b21GaWVsZEVycm9yUGF0dGVybjogJ1ZhbG9yIGludsOhbGlkby4nLFxuICAgIGN1c3RvbUZpZWxkUGxhY2Vob2xkZXI6ICdQb3IgZmF2b3IgaW5zaXJhIHVtIHZhbG9yJyxcbiAgICByZW1lbWJlclVzZXI6ICdMb2dhciBhdXRvbWF0aWNhbWVudGUnLFxuICAgIHJlbWVtYmVyVXNlckhpbnQ6ICdWb2PDqiBwb2RlIGRlc2FiaWxpdGFyIGVzc2Egb3DDp8OjbyBubyBtZW51IGRvIHNpc3RlbWEnLFxuICAgIHN1Ym1pdExhYmVsOiAnRW50cmFyJyxcbiAgICBzdWJtaXR0ZWRMYWJlbDogJ0NhcnJlZ2FuZG8uLi4nLFxuICAgIGZvcmdvdFBhc3N3b3JkOiAnRXNxdWVjZXUgc3VhIHNlbmhhPycsXG4gICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAgcmVnaXN0ZXJVcmw6ICdOb3ZvIHJlZ2lzdHJvJyxcbiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdFc3F1ZWNldSBzdWEgc2VuaGE/JyxcbiAgICBpZllvdVRyeUhhcmRlcjogJ1NlIHRlbnRhciBtYWlzICcsXG4gICAgYXR0ZW1wdHM6ICd7MH0gdmV6KGVzKSAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDogJ3NlbSBzdWNlc3NvIHNldSB1c3XDoXJpbyBzZXLDoSBibG9xdWVhZG8gZSB2b2PDqiBmaWNhIDI0IGhvcmFzIHNlbSBwb2RlciBhY2Vzc2FyIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6ICdNZWxob3IgY3JpYXIgdW1hIHNlbmhhIG5vdmEgYWdvcmEhIFZvY8OqIHZhaSBwb2RlciBlbnRyYXIgbm8gc2lzdGVtYSBsb2dvIGVtIHNlZ3VpZGEuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ0VzcXVlY2kgbWluaGEgc2VuaGEnLFxuICAgIHdlbGNvbWU6ICdCb2FzLXZpbmRhcycsXG4gICAgc3VwcG9ydDogJ1N1cG9ydGUnXG4gIH0sXG4gIHJ1OiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICfQlNC+0LHRgNC+INC/0L7QttCw0LvQvtCy0LDRgtGMIScsXG4gICAgbG9naW5FcnJvclBhdHRlcm46ICfQndC10LLQtdGA0L3Ri9C5INC70L7Qs9C40L0nLFxuICAgIGxvZ2luSGludDogYNCS0LDRiCDQu9C+0LPQuNC9INCx0YvQuyDQv9GA0LXQtNC+0YHRgtCw0LLQu9C10L0g0LLQsNC8INCyINC/0LXRgNCy0YvQuSDQtNC10L3RjC5cbiAgICDQldGB0LvQuCDRgyDQstCw0YEg0L3QtdGCINGN0YLQvtC5INC40L3RhNC+0YDQvNCw0YbQuNC4LCDQvtCx0YDQsNGC0LjRgtC10YHRjCDQsiDRgdC70YPQttCx0YMg0L/QvtC00LTQtdGA0LbQutC4YCxcbiAgICBsb2dpblBsYWNlaG9sZGVyOiAn0JLRgdGC0LDQstGM0YLQtSDRgdCy0L7QuSDQsNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiycsXG4gICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICfQndC10LLQtdGA0L3Ri9C5INC/0LDRgNC+0LvRjCcsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ9CS0LLQtdC00LjRgtC1INGB0LLQvtC5INC/0LDRgNC+0LvRjCcsXG4gICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICfQndC10LLQtdGA0L3QvtC1INC30L3QsNGH0LXQvdC40LUuJyxcbiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAn0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INC30L3QsNGH0LXQvdC40LUnLFxuICAgIHJlbWVtYmVyVXNlcjogJ9CQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC40Lkg0LLRhdC+0LQnLFxuICAgIHJlbWVtYmVyVXNlckhpbnQ6ICfQktGLINC80L7QttC10YLQtSDQvtGC0LrQu9GO0YfQuNGC0Ywg0Y3RgtGDINC+0L/RhtC40Y4g0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGB0LjRgdGC0LXQvNGLJyxcbiAgICBzdWJtaXRMYWJlbDogJ9CS0L7QudGC0LgnLFxuICAgIHN1Ym1pdHRlZExhYmVsOiAnM9Cw0LPRgNGD0LfQutCwLi4uJyxcbiAgICBmb3Jnb3RQYXNzd29yZDogJ9CX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70Yw/JyxcbiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICByZWdpc3RlclVybDogJ9Cd0L7QstGL0Lkg0YDQtdCz0LjRgdGC0YAnLFxuICAgIHRpdGxlUG9wb3ZlcjogJ9Ce0LkhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICfQl9Cw0LHRi9C70Lgg0L/QsNGA0L7Qu9GMPycsXG4gICAgaWZZb3VUcnlIYXJkZXI6ICfQldGB0LvQuCDQstGLINCx0LXQt9GD0YHQv9C10YjQvdC+INC/0L7Qv9GL0YLQsNC10YLQtdGB0Ywg0LLQvtC50YLQuCDQtdGJ0LUgJyxcbiAgICBhdHRlbXB0czogJ3swfSDRgNCw0Lco0LApICcsXG4gICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAn0JLQsNGIINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQsdGD0LTQtdGCINC30LDQsdC70L7QutC40YDQvtCy0LDQvSwg0Lgg0JLRiyDQvtGB0YLQsNC90LXRgtC10YHRjCDQvdCwIDI0INGH0LDRgdCwINCx0LXQtyDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC00L7RgdGC0YPQv9CwIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6ICfQm9GD0YfRiNC1INGB0L7Qt9C00LDQudGC0LUg0L3QvtCy0YvQuSDQv9Cw0YDQvtC70Ywg0YHQtdC50YfQsNGBIcKg0JLRiyDRgdC80L7QttC10YLQtSDRgdGA0LDQt9GDINCy0L7QudGC0Lgg0LIg0YHQuNGB0YLQtdC80YMuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ9CvINC30LDQsdGL0Lsg0YHQstC+0Lkg0L/QsNGA0L7Qu9GMJyxcbiAgICB3ZWxjb21lOiAn0LTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCcsXG4gICAgc3VwcG9ydDogJ9Cf0L7QtNC00LXRgNC20LrQsCdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvUGFnZUxvZ2luTGl0ZXJhbEluID0ge1xuICBlbjogJ2luJyxcbiAgZXM6ICdlbicsXG4gIHB0OiAnZW0nLFxuICBydTogJ9CyJ1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGNvbXBvbmVudGUgYHBvLXBhZ2UtbG9naW5gIMOpIHV0aWxpemFkbyBjb21vIHRlbXBsYXRlIHBhcmEgdGVsYSBkZSBsb2dpbi5cbiAqIENvbSBlbGUgw6kgcG9zc8OtdmVsIGRlZmluaXJtb3MgdmFsb3JlcyBwYXJhIHVzdcOhcmlvLCBzZW5oYSBlIGRlZmluaXIgYcOnw7VlcyBwYXJhIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEgZSBncmF2YcOnw6NvIGRlIGRhZG9zIGRvIHVzdcOhcmlvLlxuICogVGFtYsOpbSDDqSBwb3Nzw612ZWwgaW5zZXJpciB1bWEgaW1hZ2VtIGVtIGNvbmp1bnRvIGNvbSB1bSB0ZXh0byBkZSBkZXN0YXF1ZS5cbiAqXG4gKlxuICogQSBwcm9wcmllZGFkZSBgcC1hdXRoZW50aWNhdGlvbi11cmxgIGF1dG9tYXRpemEgYSByb3RpbmEgZG8gY29tcG9uZW50ZSBlIHNpbXBsaWZpY2EgbyBwcm9jZXNzbyBwYXJhIGF1dGVudGljYcOnw6NvIGRvIHVzdcOhcmlvLCBiYXN0YW5kb1xuICogZGVmaW5pciB1bWEgdXJsIHBhcmEgcmVxdWlzacOnw6NvIGRhIGF1dGVudGljYcOnw6NvLiBBIGZsZXhpYmlsaWRhZGUgZSBwcmF0aWNpZGFkZSBwb2RlbSBjaGVnYXIgYSB1bSBuw612ZWwgZW0gcXVlIG8gZGVzZW52b2x2aW1lbnRvXG4gKiBkYSBhcGxpY2HDp8OjbyBubyAqY2xpZW50IHNpZGUqIMOpIGRlc3Byb3ZpZGEgZGUgcXVhbHF1ZXIgY8OzZGlnby1mb250ZSByZWxhY2lvbmFkbyDDoCByb3RpbmEgZGUgbG9naW4gZGUgdXN1w6FyaW8uXG4gKiBTZXUgZGV0YWxoYW1lbnRvIHBhcmEgdXNvIHBvZGUgc2VyIHZpc3RvIGxvZ28gYWJhaXhvIGVtICpwcm9wcmllZGFkZXMqLlxuICogQ2FzbyBqdWxndWUgbmVjZXNzw6FyaW8sIHBvZGUtc2UgdGFtYsOpbSBkZWZpbmlyIG1hbnVhbG1lbnRlIGEgcm90aW5hIGRvIGNvbXBvbmVudGUuXG4gKlxuICpcbiAqIFBhcmEgcXVlIGFzIGltYWdlbnMgc2VqYW0gZXhpYmlkYXMgY29ycmV0YW1lbnRlLCDDqSBuZWNlc3PDoXJpbyBpbmNsdWlyIG8gY2FtaW5obyBkZWxhcyBhbyBwcm9qZXRvLiBQYXJhIGlzc28sIGVkaXRlXG4gKiBvICphc3NldHMqIG5vIGFycXVpdm8gKiphbmd1bGFyLmpzb24qKiBkYSBhcGxpY2HDp8OjbyBuYSBzZWd1aW50ZSBvcmRlbTpcbiAqIGBgYFxuICogICBcImFzc2V0c1wiOiBbXG4gKiAgICAgXCJzcmMvYXNzZXRzXCIsXG4gKiAgICAgXCJzcmMvZmF2aWNvbi5pY29cIixcbiAqICAgICB7XG4gKiAgICAgICBcImdsb2JcIjogXCIqKlxcLypcIixcbiAqICAgICAgIFwiaW5wdXRcIjogXCJub2RlX21vZHVsZXMvQHBvLXVpL3N0eWxlL2ltYWdlc1wiLFxuICogICAgICAgXCJvdXRwdXRcIjogXCJhc3NldHMvaW1hZ2VzXCJcbiAqICAgICB9XG4gKiAgIF1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogTyBgcC1iYWNrZ3JvdW5kYCBwZXJtaXRlIGluc2VyaXIgdW1hIGltYWdlbSBkZSBkZXN0YXF1ZSBhbyBsYWRvIGRpcmVpdG8gZG8gZm9ybXVsw6FyaW8gZGUgbG9naW4sIGNhc28gYSBwcm9wcmllZGFkZVxuICAgKiBuw6NvIHNlamEgcHJlZW5jaGlkYSBvIGZvcm11bMOhcmlvIHNlcsOhIGNlbnRyYWxpemFkbyBubyBlc3Bhw6dvIGRpc3BvbsOtdmVsLlxuICAgKlxuICAgKiBBIGZvbnRlIGRhIGltYWdlbSBwb2RlIHNlciBkZSB1bSBjYW1pbmhvIGxvY2FsIG91IHVtYSB1cmwgZGUgdW0gc2Vydmlkb3IgZXh0ZXJuby5cbiAgICpcbiAgICogQWzDqW0gZGEgaW1hZ2VtLCDDqSBwb3Nzw612ZWwgYWRpY2lvbmFyIHVtIHRleHRvIGluZm9ybWF0aXZvIHBvciBjaW1hIGRhIGltYWdlbSBkYSBpbWFnZW0gZGUgZGVzdGFxdWUsIHBhcmEgaXNzbyBpbmZvcm1lXG4gICAqIHVtIHZhbG9yIHBhcmEgYSBsaXRlcmFsIGBoaWdobGlnaHRJbmZvYC5cbiAgICpcbiAgICogPiBWZWphIG1haXMgc29icmUgYXMgbGl0ZXJhaXMgbmEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKlxuICAgKiBFeGVtcGxvcyBkZSB2YWxvcmVzIHbDoWxpZG9zOlxuICAgKiAtICoqbG9jYWwqKjogYC4vYXNzZXRzL2ltYWdlcy9sb2dpbi1iYWNrZ3JvdW5kLnBuZ2BcbiAgICogLSAqKnVybCBleHRlcm5hKio6IGBodHRwczovL3BvLXVpLmlvL2Fzc2V0cy9pbWFnZXMvbG9naW4tYmFja2dyb3VuZC5wbmdgXG4gICAqXG4gICAqID4gRXNzYSBwcm9wcmllZGFkZSDDqSBpZ25vcmFkYSBwYXJhIGFwbGljYcOnw7VlcyBtb2JpbGUuXG4gICAqL1xuICBASW5wdXQoJ3AtYmFja2dyb3VuZCcpIGJhY2tncm91bmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhIGxvY2FsaXphZGEgbmEgcGFydGUgc3VwZXJpb3IuXG4gICAqXG4gICAqID4gQ2FzbyBzZWphIGluZGVmaW5pZGEgbyBlc3Bhw6dvIHNlIG1hbnTDqW0gcHJlc2VydmFkbyBwb3LDqW0gdmF6aW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9nbycpIGxvZ28/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwcmVzc8OjbyByZWd1bGFyIHBhcmEgdmFsaWRhciBvIGNhbXBvIGRlIGxvZ2luLCBjYXNvIGEgZXhwcmVzc8OjbyBuw6NvIHNlamEgYXRlbnRpZGEsIGEgbGl0ZXJhbCBgbG9naW5FcnJvclBhdHRlcm5gXG4gICAqIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqIEV4ZW1wbG9zIGRlIHZhbG9yZXMgdsOhbGlkb3M6XG4gICAqIC0gZW1haWw6IGBbZXhwcmVzc2FvLXJlZ3VsYXItZW1haWxdYFxuICAgKiAtIGNwZjogYFtleHByZXNzYW8tcmVndWxhci1jcGZdYFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgbG9naW5FcnJvclBhdHRlcm5gLlxuICAgKi9cbiAgQElucHV0KCdwLWxvZ2luLXBhdHRlcm4nKSBsb2dpblBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwcmVzc8OjbyByZWd1bGFyIHBhcmEgdmFsaWRhciBvIGNhbXBvIGRlIHBhc3N3b3JkLCBjYXNvIGEgZXhwcmVzc8OjbyBuw6NvIHNlamEgYXRlbnRpZGEsIGEgbGl0ZXJhbCBgcGFzc3dvcmRFcnJvclBhdHRlcm5gXG4gICAqIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqIEV4ZW1wbG9zIGRlIHZhbG9yZXMgdsOhbGlkb3M6XG4gICAqIC0gQXBlbmFzIG7Dum1lcm9zOiBgXFxkP2BcbiAgICogLSBMZXRyYXMgbcOtbnVzY3VsYXM6IGBcXHo/YFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcGFzc3dvcmRFcnJvclBhdHRlcm5gLlxuICAgKi9cbiAgQElucHV0KCdwLXBhc3N3b3JkLXBhdHRlcm4nKSBwYXNzd29yZFBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhIGxvY2FsaXphZGEgbm8gcm9kYXDDqS5cbiAgICovXG4gIEBJbnB1dCgncC1zZWNvbmRhcnktbG9nbycpIHNlY29uZGFyeUxvZ28/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBxdWFuZG8gbyB1c3XDoXJpbyBhbHRlcmFyIG8gaW5wdXQgZG8gY2FtcG8gbG9naW4uXG4gICAqXG4gICAqIEVzc2UgZXZlbnRvIHJlY2ViZXLDoSBjb21vIHBhcsOibWV0cm8gdW1hIHZhcmnDoXZlbCBkbyB0aXBvIGBzdHJpbmdgIGNvbSBvIHRleHRvIGluZm9ybWFkbyBubyBjYW1wby5cbiAgICpcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhIHNlIGZvciBkZWZpbmlkbyB2YWxvciBwYXJhIGEgcHJvcHJpZWRhZGUgYHAtYXV0aGVudGljYXRpb24tdXJsYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtbG9naW4tY2hhbmdlJykgbG9naW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gc3VibWV0ZXIgbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiAoYXBlcnRhbmRvIGBFbnRlcmAgZGVudHJvIGRvcyBjYW1wb3Mgb3UgcHJlc3Npb25hbmRvIG8gYm90w6NvIGRlIGNvbmZpcm1hw6fDo28pLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtIG9iamV0byBkbyB0aXBvIGBQb1BhZ2VMb2dpbmAgY29tIG9zIGRhZG9zIGluZm9ybWFkb3Mgbm8gZm9ybXVsw6FyaW8uXG4gICAqXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzZXLDoSBpZ25vcmFkYSBzZSBmb3IgZGVmaW5pZG8gdmFsb3IgcGFyYSBhIHByb3ByaWVkYWRlIGBwLXVybC1yZWNvdmVyeWAuXG4gICAqXG4gICAqID4gUGFyYSBtYWlzIGRldGFsaGVzIGNvbnN1bHRlIGEgZG9jdW1lbnRhw6fDo28gc29icmUgYSBpbnRlcmZhY2UgYFBvUGFnZUxvZ2luYCBtYWlzIGFiYWl4by5cbiAgICovXG4gIEBPdXRwdXQoJ3AtbG9naW4tc3VibWl0JykgbG9naW5TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFBvUGFnZUxvZ2luPigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIG8gdXN1w6FyaW8gYWx0ZXJhciBvIGlucHV0IGRvIGNhbXBvIHBhc3N3b3JkLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtYSB2YXJpw6F2ZWwgZG8gdGlwbyBgc3RyaW5nYCBjb20gbyB0ZXh0byBpbmZvcm1hZG8gbm8gY2FtcG8uXG4gICAqXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzZXLDoSBpZ25vcmFkYSBzZSBmb3IgZGVmaW5pZG8gdmFsb3IgcGFyYSBhIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXVybGAuXG4gICAqL1xuICBAT3V0cHV0KCdwLXBhc3N3b3JkLWNoYW5nZScpIHBhc3N3b3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIG8gdXN1w6FyaW8gYWx0ZXJhciBvIGlkaW9tYSBkYSBww6FnaW5hLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtIG9iamV0byBkbyB0aXBvIGBQb0xhbmd1YWdlYCBjb20gYSBsaW5ndWFnZW0gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqL1xuICBAT3V0cHV0KCdwLWxhbmd1YWdlLWNoYW5nZScpIGxhbmd1YWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UG9MYW5ndWFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBvTGFuZ3VhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUtbG9naW4nKSBub0F1dG9jb21wbGV0ZUxvZ2luOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiA+IE5vIGNvbXBvbmVudGUgYHBvLXBhc3N3b3JkYCBzZXLDoSBkZWZpbmlkbyBjb21vIGBuZXctcGFzc3dvcmRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlLXBhc3N3b3JkJykgbm9BdXRvY29tcGxldGVQYXNzd29yZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGVzY29uZGVyIGEgZnVuw6fDo28gZGUgZXNwaWFyIGEgc2VuaGEgZGlnaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLXBhc3N3b3JkLXBlZWsnKSBoaWRlUGFzc3dvcmRQZWVrOiBib29sZWFuO1xuXG4gIGFsbExvZ2luRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGFsbFBhc3N3b3JkRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGN1c3RvbUZpZWxkT2JqZWN0OiBQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkO1xuICBjdXN0b21GaWVsZFR5cGU6IHN0cmluZztcbiAgbG9naW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVtZW1iZXJVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZztcbiAgc2hvd0V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25UeXBlOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSA9IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlLkJhc2ljO1xuICBwcml2YXRlIF9hdXRoZW50aWNhdGlvblVybDogc3RyaW5nO1xuICBwcml2YXRlIF9ibG9ja2VkVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRhY3RFbWFpbDogc3RyaW5nO1xuICBwcml2YXRlIF9jdXN0b21GaWVsZDogc3RyaW5nIHwgUG9QYWdlTG9naW5DdXN0b21GaWVsZDtcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nPzogbnVtYmVyO1xuICBwcml2YXRlIF9oaWRlUmVtZW1iZXJVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzO1xuICBwcml2YXRlIF9sb2FkaW5nPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sb2dpbjogc3RyaW5nO1xuICBwcml2YXRlIF9sb2dpbkVycm9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIF9wYXNzd29yZEVycm9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIF9wcm9kdWN0TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9yZWNvdmVyeTogc3RyaW5nIHwgUG9QYWdlTG9naW5SZWNvdmVyeSB8IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9yZWdpc3RlclVybDogc3RyaW5nO1xuICBwcml2YXRlIF9zdXBwb3J0OiBzdHJpbmcgfCBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VzTGlzdDogQXJyYXk8UG9MYW5ndWFnZT47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQW8gaW5mb3JtYXIgdW0gdmFsb3IgZG8gdGlwbyBgc3RyaW5nYCwgbyBtZXNtbyBzZXLDoSBhcGxpY2FkbyBjb21vIGEgY2hhdmUgZG8gY2FtcG8gY3VzdG9taXphZG8gZSB1dGlsaXphcsOhXG4gICAqIG9zIHZhbG9yZXMgcGFkcsO1ZXMgY29udGlkb3MgbmEgcHJvcHJpZWRhZGUgYGxpdGVyYWxzYCBjb21vIGBjdXN0b21GaWVsZEVycm9yUGF0dGVybmAgZSBgY3VzdG9tRmllbGRQbGFjZWhvbGRlcmAuXG4gICAqXG4gICAqIEV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgaW5mb3JtYXIgdW0gb2JqZXRvIHF1ZSBzZWd1ZSBhIGRlZmluacOnw6NvIGRhIGludGVyZmFjZSBgUG9QYWdlTG9naW5DdXN0b21GaWVsZGAsIG9uZGVcbiAgICogYXRyYXbDqXMgZG9zIHBhcsOibWV0cm9zIGVudmlhZG9zIHBvZGUgZ2VyYXIgdW0gYHBvLWlucHV0YCwgYHBvLWNvbWJvYCBlc3BlY2lmaWNhbWVudGUgcGFyYSBzZXJ2acOnb3NcbiAgICogb3UgYHBvLXNlbGVjdGAgcGFyYSB2YWxvcmVzIGZpeG9zLlxuICAgKlxuICAgKiBBYmFpeG8gc2VndWVtIG9zIGV4ZW1wbG9zIGRlIGNhZGEgdGlwbyBkZSBjYW1wby5cbiAgICpcbiAgICogYHBvLWlucHV0YDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBwcm9wZXJ0eTogJ2RvbWFpbicsXG4gICAqICAgdmFsdWU6ICdqdjAxJyxcbiAgICogICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgZG9tYWluJyxcbiAgICogICBwYXR0ZXJuOiAnW2Etel0nLFxuICAgKiAgIGVycm9yUGF0dGVybjogJ0ludmFsaWQgdmFsdWUnXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIGBwby1jb21ib2A6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgcHJvcGVydHk6ICdkb21haW4nLFxuICAgKiAgIHZhbHVlOiAnanYwMScsXG4gICAqICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGRvbWFpbicsXG4gICAqICAgdXJsOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL2NvbWJvT3B0aW9uL2RvbWFpbnMnLFxuICAgKiAgIGZpZWxkVmFsdWU6ICduaWNrbmFtZSdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogYHBvLXNlbGVjdGA6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgcHJvcGVydHk6ICdkb21haW4nLFxuICAgKiAgIHZhbHVlOiAnanYwMScsXG4gICAqICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGRvbWFpbicsXG4gICAqICAgb3B0aW9uczogW3tsYWJlbDogJ0RvbWFpbiAxJywgdmFsdWU6ICcxJ30sIHtsYWJlbDogJ0RvbWFpbiAyJywgdmFsdWU6ICcyJ31dXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gbyBjdXN0b21GaWVsZCBwb3NzdWEgb3B0aW9ucywgdXJsIGUgZmllbGRWYWx1ZSBwcmVlbmNoaWRvcywgc2Vyw6EgcHJpb3JpemFkbyBvIHBvLXNlbGVjdFxuICAgKiB1dGlsaXphbmRvIG8gb3B0aW9ucy5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1jdXN0b20tZmllbGQnKSBzZXQgY3VzdG9tRmllbGQodmFsdWU6IHN0cmluZyB8IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmIChpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gJ2lucHV0JztcbiAgICAgICAgdGhpcy5fY3VzdG9tRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZE9iamVjdCA9IHRoaXMuZ2V0RGVmYXVsdEN1c3RvbUZpZWxkT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNUeXBlb2YodmFsdWUsICdvYmplY3QnKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWVbJ3Byb3BlcnR5J10pIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZE9iamVjdCA9IDxQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkPnZhbHVlO1xuXG4gICAgICAgIGlmICghdGhpcy5jdXN0b21GaWVsZE9iamVjdC5vcHRpb25zICYmICF0aGlzLmN1c3RvbUZpZWxkT2JqZWN0LnVybCkge1xuICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gJ2lucHV0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkVHlwZSA9IHRoaXMuY3VzdG9tRmllbGRPYmplY3Qub3B0aW9ucyA/ICdzZWxlY3QnIDogJ2NvbWJvJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jdXN0b21GaWVsZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1c3RvbUZpZWxkT2JqZWN0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGN1c3RvbUZpZWxkKCk6IHN0cmluZyB8IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21GaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcnNvbmFsaXphIG8gZS1tYWlsIHF1ZSDDqSBleGliaWRvIG5hIG1lbnNhZ2VtIGRlIGRpY2EgZGUgbG9naW4gcGFkcsOjbyBwYXJhIGNvbnRhdG8gZGUgc3Vwb3J0ZS5cbiAgICovXG4gIEBJbnB1dCgncC1jb250YWN0LWVtYWlsJykgc2V0IGNvbnRhY3RFbWFpbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGFjdEVtYWlsID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbnRhY3RFbWFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFjdEVtYWlsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gY3VzdG9taXphZG8gcXVlIGZpY2EgZW50cmUgYSBsb2dvIGUgYSBtZW5zYWdlbSBkZSBib2FzLXZpbmRhcy5cbiAgICovXG4gIEBJbnB1dCgncC1wcm9kdWN0LW5hbWUnKSBzZXQgcHJvZHVjdE5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3Byb2R1Y3ROYW1lID0gdmFsdWU7XG4gIH1cbiAgZ2V0IHByb2R1Y3ROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9kdWN0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkaWNpb25hIHVtYSBgdGFnYCBhYmFpeG8gZG8gdMOtdHVsbyBxdWUgZXNwZWNpZmljYSBvIGFtYmllbnRlIHF1ZSBvIHVzdcOhcmlvIGVzdMOhIGZhemVuZG8gbyBsb2dpbi5cbiAgICpcbiAgICogPiBFc3NhIHByb3ByaWVkYWRlIGxpbWl0YSBvIHRleHRvIGVtIDQwIGNhcmFjdGVyZXMuXG4gICAqL1xuICBASW5wdXQoJ3AtZW52aXJvbm1lbnQnKSBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5sZW5ndGggPiBwb1BhZ2VMb2dpbkNvbnRlbnRNYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQuc3Vic3RyaW5nKDAsIHBvUGFnZUxvZ2luQ29udGVudE1heExlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfVxuICB9XG4gIGdldCBlbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeGliZSB1bSBhdmlzbyBkZSBibG9xdWVpbyBkZSBhY29yZG8gY29tIGEgcXVhbnRpZGFkZSByZXN0YW50ZSBkZSB0ZW50YXRpdmFzLlxuICAgKiBPIGF2aXNvIHNlcsOhIGV4aWJpZG8gc29tZW50ZSBzZSBhIHF1YW50aWRhZGUgZm9yIG1haW9yIHF1ZSB6ZXJvLlxuICAgKlxuICAgKiA+IENhc28gdGVuaGEgYWxndW0gdmFsb3IgYXRyaWJ1w61kbyBwYXJhIG8gYXRyaWJ1dG8gYHAtYXV0aGVudGljYXRpb24tdXJsYCBlIG8gcmV0b3JubyBkYSByZXF1aXNpw6fDo28gZXN0aXZlciBhdHJpYnVpbmRvIHZhbG9yXG4gICAqIHBhcmEgbyBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCwgbyB2YWxvciBjb25zaWRlcmFkbyBzZXLDoSBvIGRvIHJldG9ybm8gZGEgcmVxdWlzacOnw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nJykgc2V0IGV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGNvbnZlcnRUb0ludCh2YWx1ZSk7XG4gICAgdGhpcy5zaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID4gMDtcbiAgfVxuXG4gIGdldCBleGNlZWRlZEF0dGVtcHRzV2FybmluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leGNlZWRlZEF0dGVtcHRzV2FybmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVzY29uZGUgYSBmdW7Dp8OjbyBcIkxlbWJyYXIgdXN1w6FyaW9cIiBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbi5cbiAgICpcbiAgICogUXVhbmRvIGVzc2EgcHJvcHJpZWRhZGUgw6kgc2V0YWRhIGNvbSBgdHJ1ZWAgYSBwcm9wcmllZGFkZSBgcmVtZW1iZXJVc2VyYCBlbnZpYWRhIG5vIGV2ZW50byBgcC1sb2dpbi1zdWJtaXRgIHNlcsOhIHNlbXByZVxuICAgKiBgZmFsc2VgLlxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcmVtZW1iZXJVc2VyYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtcmVtZW1iZXItdXNlcicpIHNldCBoaWRlUmVtZW1iZXJVc2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZVJlbWVtYmVyVXNlciA9IDxhbnk+dmFsdWUgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2hpZGVSZW1lbWJlclVzZXIpIHtcbiAgICAgIHRoaXMucmVtZW1iZXJVc2VyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGdldCBoaWRlUmVtZW1iZXJVc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlUmVtZW1iZXJVc2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtbG9naW5gLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzID0ge1xuICAgKiAgICBhdHRlbXB0czogJ3swfSB2ZXooZXMpICcsXG4gICAqICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzogJ01lbGhvciBjcmlhciB1bWEgc2VuaGEgbm92YSBhZ29yYSEgVm9jw6ogdmFpIHBvZGVyIGVudHJhciBubyBzaXN0ZW1hIGxvZ28gZW0gc2VndWlkYS4nLFxuICAgKiAgICBmb3Jnb3RQYXNzd29yZDogJ0VzcXVlY2V1IHN1YSBzZW5oYT8nLFxuICAgKiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdFc3F1ZWNldSBzdWEgc2VuaGE/JyxcbiAgICogICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAqICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnRXNxdWVjaSBtaW5oYSBzZW5oYScsXG4gICAqICAgIGlmWW91VHJ5SGFyZGVyOiAnU2UgdGVudGFyIG1haXMgJyxcbiAgICogICAgd2VsY29tZTogJ0JvYXMtdmluZGFzJyxcbiAgICogICAgbG9naW5FcnJvclBhdHRlcm46ICdMb2dpbiBvYnJpZ2F0w7NyaW8nLFxuICAgKiAgICBsb2dpbkhpbnQ6ICdDYXNvIG7Do28gcG9zc3VhIHVzdcOhcmlvIGVudHJlIGVtIGNvbnRhdG8gY29tIG8gc3Vwb3J0ZScsXG4gICAqICAgIGxvZ2luTGFiZWw6ICdJbnNpcmEgc2V1IHVzdcOhcmlvJyxcbiAgICogICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgdXN1w6FyaW8gZGUgYWNlc3NvJyxcbiAgICogICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdTZW5oYSBvYnJpZ2F0w7NyaWEnLFxuICAgKiAgICBwYXNzd29yZExhYmVsOiAnSW5zaXJhIHN1YSBzZW5oYScsXG4gICAqICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNpcmEgc3VhIHNlbmhhIGRlIGFjZXNzbycsXG4gICAqICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnQ2FtcG8gY3VzdG9taXphZG8gaW52w6FsaWRvJyxcbiAgICogICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ1BvciBmYXZvciBpbnNpcmEgdW0gdmFsb3InLFxuICAgKiAgICByZWdpc3RlclVybDogJ05vdm8gcmVnaXN0cm8nLFxuICAgKiAgICByZW1lbWJlclVzZXI6ICdMZW1icmFyIHVzdcOhcmlvJyxcbiAgICogICAgcmVtZW1iZXJVc2VySGludDogJ0VzdGEgb3DDp8OjbyBwb2RlIHNlciBkZXNhYmlsaXRhZGEgbmFzIGNvbmZpZ3VyYcOnw7VlcyBkbyBzaXN0ZW1hJyxcbiAgICogICAgc3VibWl0TGFiZWw6ICdBY2Vzc2FyIHNpc3RlbWEnLFxuICAgKiAgICBzdWJtaXR0ZWRMYWJlbDogJ0NhcnJlZ2FuZG8uLi4nLFxuICAgKiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICogICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAnc2VtIHN1Y2Vzc28gc2V1IHVzdcOhcmlvIHNlcsOhIGJsb3F1ZWFkbyBlIHZvY8OqIGZpY2EgMjQgaG9yYXMgc2VtIHBvZGVyIGFjZXNzYXIgOignXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlTG9naW5MaXRlcmFscyA9IHtcbiAgICogICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgdXN1w6FyaW8gZGUgYWNlc3NvJyxcbiAgICogICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2lyYSBzdWEgc2VuaGEgZGUgYWNlc3NvJyxcbiAgICogICAgc3VibWl0TGFiZWw6ICdBY2Vzc2FyIHNpc3RlbWEnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWxvZ2luXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1wYWdlLWxvZ2luPlxuICAgKiBgYGBcbiAgICpcbiAgICogID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkbyBicm93c2VyIChwdCwgZW4sIGVzKS5cbiAgICogID4gw4kgdGFtYsOpbSBwb3Nzw612ZWwgYWx0ZXJuYXIgbyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBhdHJhdsOpcyBkbyBzZWxldG9yIGRlIGlkaW9tYXMgbG9jYWxpemFkbyBuYSBwYXJ0ZSBpbmZlcmlvciBkbyB0ZW1wbGF0ZSxcbiAgICogbmVzc2UgY2FzbywgaMOhIHRhbWLDqW0gYSBvcMOnw6NvIGRvIGlkaW9tYSBydXNzby5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9QYWdlTG9naW5MaXRlcmFscykge1xuICAgIHRoaXMuX2xpdGVyYWxzID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgdW0gZXN0YWRvIGRlIGNhcnJlZ2FtZW50byBhbyBib3TDo28gZGUgKmxvZ2luKi5cbiAgICpcbiAgICogPiDDiSBuZWNlc3PDoXJpbyBhdHJpYnVpciBgdHJ1ZWAgw6AgZXN0YSBwcm9wcmllZGFkZSBuYSBmdW7Dp8OjbyBkZWZpbmlkYSBlbSBgcC1sb2dpbi1zdWJtaXRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZGluZycpIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbG9hZGluZyA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBWYWxvciBkbyBtb2RlbG8gZG8gY2FtcG8gZGUgbG9naW4uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4nKSBzZXQgbG9naW4odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvZ2luID0gdmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMubG9naW5DaGFuZ2UuZW1pdCh0aGlzLl9sb2dpbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxvZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRyaWJ1dG8gcXVlIHJlY2ViZSB1bWEgbGlzdGEgZGUgZXJyb3MgZSBleGliZSBhYmFpeG8gZG8gY2FtcG8gZGUgbG9naW4uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4tZXJyb3JzJykgc2V0IGxvZ2luRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fbG9naW5FcnJvcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMuX2xvZ2luRXJyb3JzKTtcbiAgfVxuICBnZXQgbG9naW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luRXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRyaWJ1dG8gcXVlIHJlY2ViZSB1bWEgbGlzdGEgZGUgZXJyb3MgZSBleGliZSBhYmFpeG8gZG8gY2FtcG8gZGUgcGFzc3dvcmQuXG4gICAqL1xuICBASW5wdXQoJ3AtcGFzc3dvcmQtZXJyb3JzJykgc2V0IHBhc3N3b3JkRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fcGFzc3dvcmRFcnJvcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNldFBhc3N3b3JkRXJyb3JzKHRoaXMuX3Bhc3N3b3JkRXJyb3JzKTtcbiAgfVxuICBnZXQgcGFzc3dvcmRFcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bhc3N3b3JkRXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhpYmUgdW0gbGluayBhYmFpeG8gZG8gZm9ybXVsw6FyaW8gZGUgbG9naW4gcGFyYSBxdWUgb3MgdXN1w6FyaW9zIGRhIGFwbGljYcOnw6NvIGZhw6dhbSBhIHJlY3VwZXJhw6fDo28gZG9zIGRhZG9zIGRlIGF1dGVudGljYcOnw6NvLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqXG4gICAqIC0gKipTdHJpbmcqKjogaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYTtcbiAgICogLSAqKkZ1bmN0aW9uKio6IHBvZGUtc2UgY3VzdG9taXphciBhIGHDp8Ojby4gUGFyYSBlc3RhIHBvc3NpbGlkYWRlIGJhc3RhIGF0cmlidWlyOlxuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW4+XG4gICAqICAgW3JlY292ZXJ5XT1cInRoaXMubXlSZWNvdmVyeS5iaW5kKHRoaXMpXCI+XG4gICAqIDwvcG8tcGFnZS1sb2dpbj5cbiAgICogYGBgXG4gICAqXG4gICAqIC0gKipQb1BhZ2VMb2dpblJlY292ZXJ5Kio6IGNyaWEtc2UgdsOtbmN1bG8gYXV0b23DoXRpY28gY29tIG8gdGVtcGxhdGUgKipwby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeSoqLlxuICAgKiAgIE8gb2JqZXRvIGRldmUgY29udGVyIGEgKip1cmwqKiBwYXJhIHJlcXVpc2nDp8OjbyBkb3MgcmVjdXJzb3MgZSBwb2RlLXNlIGRlZmluaXIgbyAqKnRpcG8qKiBkZSBtb2RhbCBwYXJhIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEsXG4gICAqICAgKiplbWFpbCoqIHBhcmEgY29udGF0byBlICoqbcOhc2NhcmEqKiBkbyBjYW1wbyBkZSB0ZWxlZm9uZS5cbiAgICovXG4gIEBJbnB1dCgncC1yZWNvdmVyeScpIHNldCByZWNvdmVyeSh2YWx1ZTogc3RyaW5nIHwgRnVuY3Rpb24gfCBQb1BhZ2VMb2dpblJlY292ZXJ5KSB7XG4gICAgdGhpcy5fcmVjb3ZlcnkgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCByZWNvdmVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYXNvIGEgYXBsaWNhw6fDo28gdGVuaGEgdW0gbGluayBwYXJhIG5vdm9zIGNhZGFzdHJvcywgaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYSwgZGVzc2FcbiAgICogZm9ybWEgc2Vyw6EgZXhpYmlkbyB1bSBsaW5rIGFiYWl4byBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiBwYXJhIG9zIHVzdcOhcmlvcyBkYSBhcGxpY2HDp8Ojby5cbiAgICpcbiAgICogRXhlbXBsb3MgZGUgdmFsb3JlcyB2w6FsaWRvczpcbiAgICogLSAqKmxvY2FsKio6IGAvaG9tZWBcbiAgICogLSAqKnVybCBleHRlcm5hKio6IGBodHRwczovL3BvLXVpLmlvYFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcmVnaXN0ZXJVcmxgLlxuICAgKi9cbiAgQElucHV0KCdwLXJlZ2lzdGVyLXVybCcpIHNldCByZWdpc3RlclVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVnaXN0ZXJVcmwgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgcmVnaXN0ZXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0ZXJVcmw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBdHJpYnV0byBxdWUgcmVjZWJlIG8gdGlwbyBkZSBlc3F1ZW1hIGRhIGF1dGVudGljYcOnw6NvLCBzZW5kbyBzdXBvcnRhZG9zIGFwZW5hcyBvcyB2YWxvcmVzIGBCYXNpY2AgZSBgQmVhcmVyYC5cbiAgICpcbiAgICogPiBDYXNvIG8gdGlwbyBkZWZpbmlkbyBzZWphIGBCYXNpY2AsIG8gY29tcG9uZW50ZSBmYXLDoSB1bWEgcmVxdWlzacOnw6NvIGBQT1NUYCBjb250ZW5kbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGhlYWRlcnMge1xuICAgKiAgQXV0aG9yaXphdGlvbjogQmFzaWMgYmFzZTY0KGxvZ2luOnBhc3N3b3JkKVxuICAgKiB9XG4gICAqXG4gICAqIGJvZHkge1xuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBDYXNvIG8gdGlwbyBkZWZpbmlkbyBzZWphIGBCZWFyZXJgLCBvIGNvbXBvbmVudGUgZmFyw6EgdW1hIHJlcXVpc2nDp8OjbyBgUE9TVGAgY29udGVuZG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBib2R5IHtcbiAgICogIGxvZ2luOiBsb2dpbixcbiAgICogIHBhc3N3b3JkOiBiYXNlNjQocGFzc3dvcmQpLFxuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgYFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlLkJhc2ljYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dGhlbnRpY2F0aW9uLXR5cGUnKSBzZXQgYXV0aGVudGljYXRpb25UeXBlKHZhbHVlOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSkge1xuICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uVHlwZSA9ICg8YW55Pk9iamVjdCkudmFsdWVzKFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlKS5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gdmFsdWVcbiAgICAgIDogUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUuQmFzaWM7XG4gIH1cblxuICBnZXQgYXV0aGVudGljYXRpb25UeXBlKCk6IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRW5kcG9pbnQgdXNhZG8gcGVsbyB0ZW1wbGF0ZSBwYXJhIHJlcXVpc2nDp8OjbyBkbyByZWN1cnNvLiBRdWFuZG8gcHJlZW5jaGlkbywgbyBtw6l0b2RvIGBwLWxvZ2luLXN1Ym1pdGAgc2Vyw6EgaWdub3JhZG8gZSBvXG4gICAqIGNvbXBvbmVudGUgYWRxdWlyaXLDoSBhdXRvbWF0aXphw6fDo28gcGFyYSBvIHByb2Nlc3NvIGRlIGF1dGVudGljYcOnw6NvLlxuICAgKlxuICAgKiAjIyMgUHJvY2Vzc29zXG4gICAqIEFvIGRpZ2l0YXIgdW0gdmFsb3IgdsOhbGlkbyBubyBjYW1wbyBkZSBsb2dpbi9wYXNzd29yZCBlIHByZXNzaW9uYXIgKipFbnRlcioqLCBvIGNvbXBvbmVudGUgZmFyw6EgdW1hIHJlcXVpc2nDp8OjbyBgUE9TVGBcbiAgICogbmEgdXJsIGVzcGVjaWZpY2FkYSBuZXN0YSBwcm9wcmllZGFkZSBwYXNzYW5kbyBvIG9iamV0byBjb250ZW5kbyBvIHZhbG9yIGRlZmluaWRvIHBlbG8gdXN1w6FyaW86XG4gICAqXG4gICAqIGBgYFxuICAgKiBoZWFkZXJzIHtcbiAgICogIEF1dGhvcml6YXRpb246IEJhc2ljIGJhc2U2NChsb2dpbjpwYXNzd29yZClcbiAgICogfVxuICAgKlxuICAgKiBib2R5IHtcbiAgICogIHJlbWVtYmVyVXNlcjogcmVtZW1iZXJVc2VyXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEVtIGNhc28gZGUgKipzdWNlc3NvKiosIG8gb2JqZXRvIGRlIHJldG9ybm8gw6kgYXJtYXplbmFkbyBubyBgc2Vzc2lvblN0b3JhZ2VgIGUgbyB1c3XDoXJpbyDDqSByZWRpcmVjaW9uYWRvIHBhcmEgYSBww6FnaW5hIGluaWNpYWwgZGFcbiAgICogYXBsaWNhw6fDo28gYC9gLlxuICAgKlxuICAgKiBgYGBcbiAgICogMjAwOlxuICAgKiAge1xuICAgKiAgICB1c2VyOiB1c2VyXG4gICAqICB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBFbSBjYXNvIGRlICoqZXJybyoqIG5hIGF1dGVudGljYcOnw6NvLCBlc3BlcmEtc2UgbyBzZWd1aW50ZSByZXRvcm5vOlxuICAgKlxuICAgKiBgYGBcbiAgICogNDAwLzQwMVxuICAgKiAge1xuICAgKiAgICBjb2RlOiA0MDAvNDAxLFxuICAgKiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgKiAgICBkZXRhaWxlZE1lc3NhZ2U6IGRldGFpbGVkTWVzc2FnZSxcbiAgICogICAgaGVscFVybD86IGhlbHBVcmxcbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqID4gUG9kZS1zZSBhdHJpYnVpciB1bWEgcXVhbnRpZGFkZSBtw6F4aW1hIGRlIHRlbnRhdGl2YXMgcmVzdGFudGVzIChtYXhBdHRlbXB0c1JlbWFpbmluZykgcGFyYSBvIGF0cmlidXRvIGBwLWV4Y2VlZGVkLWF0dGVtcHRzLXdhcm5pbmdgLFxuICAgKiBhc3NpbSBjb21vIG9zIGF2aXNvcyByZWxhY2lvbmFkb3MgYW9zIGNhbXBvcyBsb2dpbiBlIHBhc3N3b3JkIChsb2dpbldhcm5pbmdzLCBwYXNzd29yZFdhcm5pbmdzKSBwYXJhIG9zIGF0cmlidXRvcyBgcC1sb2dpbi1lcnJvcnNgIGVcbiAgICogYHAtcGFzc3dvcmQtZXJyb3JzYCBjb25mb3JtZSByZXRvcm5vIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIDQwMFxuICAgKiAge1xuICAgKiAgICBjb2RlOiA0MDAvNDAxLFxuICAgKiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgKiAgICBkZXRhaWxlZE1lc3NhZ2U6IGRldGFpbGVkTWVzc2FnZSxcbiAgICogICAgaGVscFVybD86IGhlbHBVcmwsXG4gICAqICAgIG1heEF0dGVtcHRzUmVtYWluaW5nPzogbWF4QXR0ZW1wdHNSZW1haW5pbmcsXG4gICAqICAgIGxvZ2luV2FybmluZ3M/OiBbbG9naW5XYXJuaW5nc10sXG4gICAqICAgIHBhc3N3b3JkV2FybmluZ3M/OiBbcGFzc3dvcmRXYXJuaW5nc11cbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqID4gQ2FzbyBvIHZhbG9yIGF0cmlidcOtZG8gcGFyYSBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCBzZWphIGlndWFsIGEgMCh6ZXJvKSwgcG9kZXLDoSBzZXIgcGFzc2FkbyB1bSB2YWxvciBwYXJhIG9cbiAgICogYXRyaWJ1dG8gYHAtYmxvY2tlZC11cmxgIGUgbyB1c3XDoXJpbyBzZXLDoSByZWRpcmVjaW9uYWRvIHBhcmEgdW1hIHRlbGEgZGUgYmxvcXVlaW8uXG4gICAqXG4gICAqICpQcm9jZXNzbyBmaW5hbGl6YWRvLipcbiAgICpcbiAgICogX19fX19fX19fX19fX19fXG4gICAqXG4gICAqICMjIyMgUHJhdGljaWRhZGVcbiAgICogQXMgaW5mb3JtYcOnw7VlcyBkbyBzZXJ2acOnbyBkZSBhdXRlbnRpY2HDp8OjbyB0YW1iw6ltIHBvZGVtIHNlciB0cmFuc21pdGlkYXMgZGlyZXRhbWVudGUgcGVsYXMgY29uZmlndXJhw6fDo29zIGRlIHJvdGEgZSwgZGVzdGEgbWFuZWlyYSxcbiAgICogZGlzcGVuc2Etc2UgcXVhbHF1ZXIgbWVuw6fDo28gZS9vdSBpbXBvcnRhw6fDo28gZG8gY29tcG9uZW50ZSBgcG8tcGFnZS1sb2dpbmAgbm8gcmVzdGFudGUgZGEgYXBsaWNhw6fDo28uIE8gZXhlbXBsbyBhYmFpeG8gZXhlbXBsaWZpY2FcbiAgICogYSBmb3JtYSBkaW7Dom1pY2EgY29tIGEgcXVhbCBvIHRlbXBsYXRlIGRlIHRlbGEgZGUgbG9naW4gcG9kZSBzZXIgZ2VyYWRvIGFvIG5hdmVnYXIgcGFyYSByb3RhIGAvbG9naW5gLCBlIHRhbWLDqW0gY29tbyBlbGUgc2UgY29tdW5pY2FcbiAgICogY29tIG8gc2VydmnDp28gcGFyYSBlZmV0dWHDp8OjbyBkbyBwcm9jZXNzbyBkZSBhdXRlbnRpY2HDp8OjbyBkbyB1c3XDoXJpbyBlIHNvbGljaXRhw6fDo28gZGUgbm92YSBzZW5oYS5cbiAgICogQmFzdGEgZGVmaW5pciBuYXMgY29uZmlndXJhw6fDtWVzIGRlIHJvdGE6XG4gICAqXG4gICAqXG4gICAqIGBgYFxuICAgKiAgIGltcG9ydCB7IFBvUGFnZUxvZ2luQ29tcG9uZW50LCBQb1BhZ2VMb2dpbkF0aGVudGljYXRpb25UeXBlIH0gZnJvbSAnQHBvLXVpL25nLXRlbXBsYXRlcyc7XG4gICAqXG4gICAqICAgLi4uXG4gICAqICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAqICAgICB7XG4gICAqICAgICAgIHBhdGg6ICdsb2dpbicsIGNvbXBvbmVudDogUG9QYWdlTG9naW5Db21wb25lbnQsIGRhdGE6IHtcbiAgICogICAgICAgICBzZXJ2aWNlQXBpOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL3VzZXJzL2F1dGhlbnRpY2F0aW9uJyxcbiAgICogICAgICAgICBlbnZpcm9ubWVudDogJ2RldmVsb3BtZW50JyxcbiAgICogICAgICAgICByZWNvdmVyeToge1xuICAgKiAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL3VzZXJzJyxcbiAgICogICAgICAgICAgIHR5cGU6IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5VHlwZS5BbGwsXG4gICAqICAgICAgICAgICBjb250YWN0TWFpbDogJ2Rldi5wb0Bwby11aS5jb20nLFxuICAgKiAgICAgICAgICAgcGhvbmVNYXNrOiAnOS05OTktOTk5LTk5OTknXG4gICAqICAgICAgICAgfSxcbiAgICogICAgICAgICByZWdpc3RlclVybDogJy9uZXctcGFzc3dvcmQnLFxuICAgKiAgICAgICAgIGF1dGhlbnRpY2F0aW9uVHlwZTogUG9QYWdlTG9naW5BdGhlbnRpY2F0aW9uVHlwZS5CYXNpY1xuICAgKiAgICAgICB9XG4gICAqICAgICB9XG4gICAqICAgICAuLi5cbiAgICogICBdO1xuICAgKlxuICAgKiAgIEBOZ01vZHVsZSh7XG4gICAqICAgICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzKV0sXG4gICAqICAgICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxuICAgKiAgIH0pXG4gICAqICAgZXhwb3J0IGNsYXNzIEFwcFJvdXRpbmdNb2R1bGUgeyB9XG4gICAqIGBgYFxuICAgKlxuICAgKlxuICAgKiBPIG1ldGFkYWRvIGBzZXJ2aWNlQXBpYCBkZXZlIHNlciBhICoqdXJsKiogcGFyYSByZXF1aXNpw6fDo28gZG9zIHJlY3Vyc29zIGRlIGF1dGVudGljYcOnw6NvLCBvIGBlbnZpcm9ubWVudGAgYWxpbWVudGEgYSBwcm9wcmllZGFkZVxuICAgKiBgcC1lbnZpcm9ubWVudGAsIGByZWNvdmVyeWAgw6kgYSBpbnRlcmZhY2UgYFBvUGFnZUxvZ2luUmVjb3ZlcnlgIHJlc3BvbnPDoXZlbCBwZWxhcyBlc3BlY2lmaWNhw6fDtWVzIGNvbnRpZGFzIG5hIG1vZGFsIGRlIHJlY3VwZXJhw6fDo28gZGVcbiAgICogc2VuaGEsIGByZWdpc3RlclVybGAgYWxpbWVudGEgYSBwcm9wcmllZGFkZSBgcC1yZWdpc3Rlci11cmxgIGUgYGF1dGhlbnRpY2F0aW9uVHlwZWAgcXVlIGRlZmluZSBhIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXR5cGVgLlxuICAgKlxuICAgKiA+IMOJIGVzc2VuY2lhbCBxdWUgc2lnYSBhIG5vbWVuY2xhdHVyYSBkb3MgYXRyaWJ1dG9zIGV4ZW1wbGlmaWNhZG9zIGFjaW1hIHBhcmEgc3VhIGVmZXRpdmEgZnVuY2lvbmFsaWRhZGUuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0aGVudGljYXRpb24tdXJsJykgc2V0IGF1dGhlbnRpY2F0aW9uVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hdXRoZW50aWNhdGlvblVybCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBhdXRoZW50aWNhdGlvblVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvblVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhc28gbyB2YWxvciBhdHJpYnXDrWRvIHBhcmEgYHAtZXhjZWVkZWQtYXR0ZW1wdHMtd2FybmluZ2Agc2VqYSBpZ3VhbCBhIDAoemVybykgZSBhIGFwbGljYcOnw6NvIHRlbmhhIHVtIGxpbmsgZGUgYmxvcXVlaW8gZGUgdXN1w6FyaW8sXG4gICAqIGluZm9ybWUgdW1hIHVybCBleHRlcm5hIG91IHVtYSByb3RhIHbDoWxpZGEsIGRlc3NhIGZvcm1hIGVtIGNhc28gZGUgYmxvcXVlaW8gbyB1c3XDoXJpbyBzZXLDoSByZWRpcmVjaW9uYWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWJsb2NrZWQtdXJsJykgc2V0IGJsb2NrZWRVcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Jsb2NrZWRVcmwgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYmxvY2tlZFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja2VkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhpYmUgdW0gYm90w6NvIHBhcmEgc3Vwb3J0ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKlxuICAgKiAtICoqU3RyaW5nKio6IFVSTCBleHRlcm5hIG91IHVtYSByb3RhIHbDoWxpZGE7XG4gICAqIC0gKipGdW5jdGlvbioqOiBGdW7Dp8OjbyBhIHNlciBkaXNwYXJhZGEgYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSBzdXBvcnRlO1xuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW4+XG4gICAqICAgW3Atc3VwcG9ydF09XCJ0aGlzLm15U3VwcG9ydC5iaW5kKHRoaXMpXCI+XG4gICAqIDwvcG8tcGFnZS1sb2dpbj5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3Atc3VwcG9ydCcpIHNldCBzdXBwb3J0KHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbikge1xuICAgIHRoaXMuX3N1cHBvcnQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdXBwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ29sZcOnw6NvIGRlIGlkaW9tYXMgcXVlIG8gY29tcG9uZW50ZSBpcsOhIHRyYXRhciBlIGRpc3BvbmliaWxpemFyw6EgcGFyYSBvIHVzdcOhcmlvIGVzY29saGVyLlxuICAgKlxuICAgKiBDYXNvIGVzc2EgcHJvcHJpZWRhZGUgbsOjbyBzZWphIHV0aWxpemFkYSBvIGNvbXBvbmVudGUgbW9zdHJhcsOhIG5vIGNvbWJvIG9zIGlkaW9tYXMgcXVlIGVsZSBzdXBvcnRhIHBvciBwYWRyw6NvLlxuICAgKlxuICAgKiBDYXNvIGEgY29sZcOnw6NvIHRlbmhhIHVtIGlkaW9tYSwgYSBww6FnaW5hIGVzdGFyw6EgbmVzc2UgaWRpb21hIGUgbsOjbyBtb3N0cmFyw6EgbyBjb21iby5cbiAgICpcbiAgICogQ2FzbyBzZWphIHBhc3NhZG8gdW0gYXJyYXkgdmF6aW8sIGEgcMOhZ2luYSB0ZXLDoSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBgaTE4bmAgZSBuw6NvIG1vc3RyYXLDoSBvIGNvbWJvIGRlIHNlbGXDp8Ojby5cbiAgICpcbiAgICogPiBTZSBmb3IgcGFzc2FkbyB1bSBpZGlvbWEgbsOjbyBzdXBvcnRhZG8sIHNlcsOhIHByZWNpc28gcGFzc2FyIGFzIGxpdGVyYWlzIHBlbGEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWxhbmd1YWdlcycpIHNldCBsYW5ndWFnZXNMaXN0KGxhbmd1YWdlc0xpc3Q6IEFycmF5PFBvTGFuZ3VhZ2U+KSB7XG4gICAgaWYgKGxhbmd1YWdlc0xpc3QpIHtcbiAgICAgIGlmIChsYW5ndWFnZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9sYW5ndWFnZXNMaXN0ID0gbGFuZ3VhZ2VzTGlzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xhbmd1YWdlc0xpc3QgPSBwb0xhbmd1YWdlRGVmYXVsdC5maWx0ZXIobGFuZ3VhZ2UgPT4gbGFuZ3VhZ2UubGFuZ3VhZ2UgPT09IHRoaXMubGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBsYW5ndWFnZXNMaXN0KCk6IEFycmF5PFBvTGFuZ3VhZ2U+IHtcbiAgICBpZiAodGhpcy5fbGFuZ3VhZ2VzTGlzdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlc0xpc3Q7XG4gICAgfVxuICAgIHJldHVybiBwb0xhbmd1YWdlRGVmYXVsdDtcbiAgfVxuXG4gIGdldCBzaG93TGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VzTGlzdC5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSB8fCBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2dpbkxpdGVyYWxzKCk6IFBvUGFnZUxvZ2luTGl0ZXJhbHMge1xuICAgIGNvbnN0IGxvZ2luSGludFdpdGhDb250YWN0RW1haWwgPSB0aGlzLmNvbnRhY3RFbWFpbFxuICAgICAgPyB0aGlzLmNvbmNhdGVuYXRlTG9naW5IaW50V2l0aENvbnRhY3RFbWFpbCh0aGlzLmNvbnRhY3RFbWFpbClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAuLi5wb1BhZ2VMb2dpbkxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgIC4uLmxvZ2luSGludFdpdGhDb250YWN0RW1haWwsXG4gICAgICAuLi50aGlzLmxpdGVyYWxzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBQb1BhZ2VMb2dpblNlcnZpY2UsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gdGhpcy5wb0xhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5sb2dpblN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5sb2dpblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUG9wb3ZlcigpIHtcbiAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGZhbHNlO1xuICB9XG5cbiAgb25Mb2dpblN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBsb2dpbkZvcm06IFBvUGFnZUxvZ2luID0ge1xuICAgICAgbG9naW46IHRoaXMubG9naW4sXG4gICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcbiAgICAgIHJlbWVtYmVyVXNlcjogdGhpcy5yZW1lbWJlclVzZXJcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY3VzdG9tRmllbGQpIHtcbiAgICAgIGxvZ2luRm9ybVt0aGlzLmN1c3RvbUZpZWxkT2JqZWN0LnByb3BlcnR5XSA9IHRoaXMuY3VzdG9tRmllbGRPYmplY3QudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxvZ2luU3Vic2NyaXB0aW9uID0gdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLm9uTG9naW4odGhpcy5hdXRoZW50aWNhdGlvblVybCwgdGhpcy5hdXRoZW50aWNhdGlvblR5cGUsIGxvZ2luRm9ybSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBkYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzVG9Qcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdQT19VU0VSX0xPR0lOJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgdGhpcy5vcGVuSW50ZXJuYWxMaW5rKCcvJyk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlID09PSAnNDAwJyB8fCBlcnJvci5lcnJvci5jb2RlID09PSAnNDAxJykge1xuICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlc1RvUHJvcGVydGllcyhlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RCbG9ja2VkVXJsKHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcsIHRoaXMuYmxvY2tlZFVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9naW5TdWJtaXQuZW1pdChsb2dpbkZvcm0pO1xuICAgICAgdGhpcy5zaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID4gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDdXN0b21GaWVsZE9iamVjdChwcm9wZXJ0eSk6IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQge1xuICAgIHJldHVybiB7IHByb3BlcnR5IH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5FeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkludGVybmFsTGluayh1cmw6IHN0cmluZykge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RCbG9ja2VkVXJsKGF0dGVtcHRzOiBudW1iZXIsIGJsb2NrZWRVcmw6IHN0cmluZykge1xuICAgIGlmIChhdHRlbXB0cyA9PT0gMCAmJiBibG9ja2VkVXJsKSB7XG4gICAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGZhbHNlO1xuICAgICAgaXNFeHRlcm5hbExpbmsoYmxvY2tlZFVybCkgPyB0aGlzLm9wZW5FeHRlcm5hbExpbmsoYmxvY2tlZFVybCkgOiB0aGlzLm9wZW5JbnRlcm5hbExpbmsoYmxvY2tlZFVybCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZXNUb1Byb3BlcnRpZXMocmVzdWx0Pykge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSByZXN1bHQuZXJyb3IubWF4QXR0ZW1wdHNSZW1haW5pbmc7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gcmVzdWx0LmVycm9yLmxvZ2luV2FybmluZ3M7XG4gICAgICB0aGlzLnBhc3N3b3JkRXJyb3JzID0gcmVzdWx0LmVycm9yLnBhc3N3b3JkV2FybmluZ3M7XG4gICAgICB0aGlzLmJsb2NrZWRVcmwgPSByZXN1bHQuZXJyb3IuYmxvY2tlZFVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IDA7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gW107XG4gICAgICB0aGlzLnBhc3N3b3JkRXJyb3JzID0gW107XG4gICAgICB0aGlzLmJsb2NrZWRVcmwgPSAnJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29uY2F0ZW5hdGVMb2dpbkhpbnRXaXRoQ29udGFjdEVtYWlsKGNvbnRhY3RFbWFpbDogc3RyaW5nKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TG9naW5FcnJvcnModmFsdWU6IEFycmF5PHN0cmluZz4pOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRQYXNzd29yZEVycm9ycyh2YWx1ZTogQXJyYXk8c3RyaW5nPik6IHZvaWQ7XG59XG4iXX0=
|
|
@@ -9,31 +9,31 @@ function PoPageLoginPopoverComponent_div_17_a_1_Template(rf, ctx) { if (rf & 1)
|
|
|
9
9
|
i0.ɵɵtext(1);
|
|
10
10
|
i0.ɵɵelementEnd();
|
|
11
11
|
} if (rf & 2) {
|
|
12
|
-
const
|
|
13
|
-
i0.ɵɵproperty("routerLink",
|
|
12
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
13
|
+
i0.ɵɵproperty("routerLink", ctx_r0.recovery);
|
|
14
14
|
i0.ɵɵadvance();
|
|
15
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
15
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.literals == null ? null : ctx_r0.literals.iForgotMyPassword, " ");
|
|
16
16
|
} }
|
|
17
17
|
function PoPageLoginPopoverComponent_div_17_a_2_Template(rf, ctx) { if (rf & 1) {
|
|
18
18
|
i0.ɵɵelementStart(0, "a", 13);
|
|
19
19
|
i0.ɵɵtext(1);
|
|
20
20
|
i0.ɵɵelementEnd();
|
|
21
21
|
} if (rf & 2) {
|
|
22
|
-
const
|
|
23
|
-
i0.ɵɵproperty("href",
|
|
22
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
23
|
+
i0.ɵɵproperty("href", ctx_r0.recovery, i0.ɵɵsanitizeUrl);
|
|
24
24
|
i0.ɵɵadvance();
|
|
25
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
25
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.literals == null ? null : ctx_r0.literals.iForgotMyPassword, " ");
|
|
26
26
|
} }
|
|
27
27
|
function PoPageLoginPopoverComponent_div_17_a_3_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
-
const
|
|
28
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
29
29
|
i0.ɵɵelementStart(0, "a", 14);
|
|
30
|
-
i0.ɵɵlistener("click", function PoPageLoginPopoverComponent_div_17_a_3_Template_a_click_0_listener() { i0.ɵɵrestoreView(
|
|
30
|
+
i0.ɵɵlistener("click", function PoPageLoginPopoverComponent_div_17_a_3_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onForgotPasswordClick(ctx_r0.recovery)); });
|
|
31
31
|
i0.ɵɵtext(1);
|
|
32
32
|
i0.ɵɵelementEnd();
|
|
33
33
|
} if (rf & 2) {
|
|
34
|
-
const
|
|
34
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
35
35
|
i0.ɵɵadvance();
|
|
36
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
36
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.literals == null ? null : ctx_r0.literals.iForgotMyPassword, " ");
|
|
37
37
|
} }
|
|
38
38
|
function PoPageLoginPopoverComponent_div_17_Template(rf, ctx) { if (rf & 1) {
|
|
39
39
|
i0.ɵɵelementStart(0, "div", 8);
|
|
@@ -77,7 +77,7 @@ export class PoPageLoginPopoverComponent {
|
|
|
77
77
|
this.forgotPassword.emit(recovery);
|
|
78
78
|
}
|
|
79
79
|
static ɵfac = function PoPageLoginPopoverComponent_Factory(t) { return new (t || PoPageLoginPopoverComponent)(); };
|
|
80
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginPopoverComponent, selectors: [["po-page-login-popover"]], inputs: { literals: [
|
|
80
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginPopoverComponent, selectors: [["po-page-login-popover"]], inputs: { literals: [0, "p-literals", "literals"], recovery: [0, "p-recovery", "recovery"], remainingAttempts: [0, "p-remaining-attempts", "remainingAttempts"] }, outputs: { forgotPassword: "p-forgot-password" }, decls: 18, vars: 10, consts: [[1, "po-page-login-popover-container"], [1, "po-page-login-popover"], [1, "po-page-login-popover-arrow"], [1, "po-page-login-popover-content"], [1, "po-font-text-bold", "po-page-login-popover-title"], [1, "po-font-text"], [1, "po-font-text-bold", "po-page-login-popover-attempts"], ["class", "po-font-text-bold po-mt-1 po-page-login-popover-link-container", 4, "ngIf"], [1, "po-font-text-bold", "po-mt-1", "po-page-login-popover-link-container"], ["class", "po-page-login-popover-link", 3, "routerLink", 4, "ngIf"], ["class", "po-page-login-popover-link", "target", "_blank", 3, "href", 4, "ngIf"], ["class", "po-page-login-popover-link", 3, "click", 4, "ngIf"], [1, "po-page-login-popover-link", 3, "routerLink"], ["target", "_blank", 1, "po-page-login-popover-link", 3, "href"], [1, "po-page-login-popover-link", 3, "click"]], template: function PoPageLoginPopoverComponent_Template(rf, ctx) { if (rf & 1) {
|
|
81
81
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
82
82
|
i0.ɵɵelement(2, "div", 2);
|
|
83
83
|
i0.ɵɵelementStart(3, "div", 3)(4, "p", 4);
|
|
@@ -134,4 +134,4 @@ export class PoPageLoginPopoverComponent {
|
|
|
134
134
|
args: ['p-forgot-password']
|
|
135
135
|
}] }); })();
|
|
136
136
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageLoginPopoverComponent, { className: "PoPageLoginPopoverComponent", filePath: "lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts", lineNumber: 20 }); })();
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi1wb3BvdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1sb2dpbi9wby1wYWdlLWxvZ2luLXBvcG92ZXIvcG8tcGFnZS1sb2dpbi1wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1sb2dpbi9wby1wYWdlLWxvZ2luLXBvcG92ZXIvcG8tcGFnZS1sb2dpbi1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0lDbUJ2RCw2QkFBc0c7SUFDcEcsWUFDRjtJQUFBLGlCQUFJOzs7SUFGMEUsNENBQXVCO0lBQ25HLGNBQ0Y7SUFERSxtR0FDRjs7O0lBQ0EsNkJBQWdIO0lBQzlHLFlBQ0Y7SUFBQSxpQkFBSTs7O0lBRjBFLHdEQUFpQjtJQUM3RixjQUNGO0lBREUsbUdBQ0Y7Ozs7SUFDQSw2QkFBc0c7SUFBMUMsd0xBQVMsNkNBQStCLEtBQUM7SUFDbkcsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUsbUdBQ0Y7OztJQVRGLDhCQUE2RjtJQU8zRixBQUhBLEFBSEEsK0VBQXNHLG1FQUdVLG1FQUdWO0lBR3hHLGlCQUFNOzs7SUFUQSxjQUFxQztJQUFyQyw2REFBcUM7SUFHckMsY0FBcUM7SUFBckMsNkRBQXFDO0lBR3JDLGNBQW1CO0lBQW5CLDJDQUFtQjs7QURmL0I7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQUNqQixRQUFRLENBQXNCO0lBRW5ELCtGQUErRjtJQUMvRixJQUF5QixRQUFRLENBQUMsS0FBOEM7UUFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQzlFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCwwRUFBMEU7SUFDM0MsaUJBQWlCLENBQVM7SUFFekQsK0hBQStIO0lBQ2xHLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXRFLFlBQVksQ0FBUztJQUViLFNBQVMsQ0FBMEM7SUFFM0QscUJBQXFCLENBQUMsUUFBUTtRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO3FGQTVCVSwyQkFBMkI7NkRBQTNCLDJCQUEyQjtZQ2xCdEMsQUFERiw4QkFBNkMsYUFDUjtZQUNqQyx5QkFBK0M7WUFFN0MsQUFERiw4QkFBMkMsV0FDZ0I7WUFDdkQsWUFDRjtZQUFBLGlCQUFJO1lBQ0osNEJBQXdCO1lBQ3RCLFlBQ0Y7WUFBQSxpQkFBSTtZQUNKLDRCQUF3QjtZQUN0QixZQUNBO1lBQUEsZ0NBQStEO1lBQzdELGFBQXFEOztZQUFBLGlCQUN0RDtZQUFBLGFBQ0g7WUFBQSxpQkFBSTtZQUNKLHNCQUFNO1lBQ04sNkJBQXdCO1lBQ3RCLGFBQ0Y7WUFBQSxpQkFBSTtZQUNKLDhFQUE2RjtZQWFuRyxBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGOztZQTVCRSxlQUNGO1lBREUsd0ZBQ0Y7WUFFRSxlQUNGO1lBREUsOEZBQ0Y7WUFFRSxlQUNBO1lBREEsMEZBQ0E7WUFDRSxlQUFxRDtZQUFyRCxrSUFBcUQ7WUFDdEQsZUFDSDtZQURHLGdHQUNIO1lBR0UsZUFDRjtZQURFLGlHQUNGO1lBQ00sY0FBYztZQUFkLG1DQUFjOzs7aUZERGIsMkJBQTJCO2NBWnZDLFNBQVM7MkJBQ0UsdUJBQXVCO2dCQVlaLFFBQVE7a0JBQTVCLEtBQUs7bUJBQUMsWUFBWTtZQUdNLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQWFZLGlCQUFpQjtrQkFBL0MsS0FBSzttQkFBQyxzQkFBc0I7WUFHQSxjQUFjO2tCQUExQyxNQUFNO21CQUFDLG1CQUFtQjs7a0ZBcEJoQiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc0V4dGVybmFsTGluaywgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9QYWdlTG9naW5MaXRlcmFscyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5SZWNvdmVyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1yZWNvdmVyeS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWxvZ2luLXBvcG92ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tcGFnZS1sb2dpbi1wb3BvdmVyLmNvbXBvbmVudC5odG1sJ1xufSlcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIHBhcmEgZGVmaW5pw6fDo28gZGEgbWVuc2FnZW0gZGUgYXZpc28gZGUgYmxvcXVlaW8gZG8gYHBvLXBhZ2UtbG9naW5gLlxuICovXG5leHBvcnQgY2xhc3MgUG9QYWdlTG9naW5Qb3BvdmVyQ29tcG9uZW50IHtcbiAgQElucHV0KCdwLWxpdGVyYWxzJykgbGl0ZXJhbHM6IFBvUGFnZUxvZ2luTGl0ZXJhbHM7XG5cbiAgLyoqIGV4aWJlIG8gbGluayBkZSAnZXNxdWVjaSBtaW5oYSBzZW5oYScgZSB2ZXJpZmljYSBzZSBvIHZhbG9yIMOpIHVtIGxpbmsgaW50ZXJubyBvdSBleHRlcm5vICovXG4gIEBJbnB1dCgncC1yZWNvdmVyeScpIHNldCByZWNvdmVyeSh2YWx1ZTogc3RyaW5nIHwgRnVuY3Rpb24gfCBQb1BhZ2VMb2dpblJlY292ZXJ5KSB7XG4gICAgdGhpcy5fcmVjb3ZlcnkgPSB2YWx1ZTtcblxuICAgIGlmIChpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnJlY292ZXJ5VHlwZSA9IGlzRXh0ZXJuYWxMaW5rKHZhbHVlKSA/ICdleHRlcm5hbExpbmsnIDogJ2ludGVybmFsTGluayc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlY292ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWNvdmVyeTtcbiAgfVxuXG4gIC8qKiBkZWZpbmUgc2UgYSBtZW5zYWdlbSBkZXZlcsOhIHNlciBleGliaWRhIGNhc28gc2VqYSBtYWlvciBxdWUgMCh6ZXJvKSAqL1xuICBASW5wdXQoJ3AtcmVtYWluaW5nLWF0dGVtcHRzJykgcmVtYWluaW5nQXR0ZW1wdHM6IG51bWJlcjtcblxuICAvKiogc2UgJ3AtcmVjb3ZlcnknIGZvciBkbyB0aXBvIEZ1bmN0aW9uIG91IFBvUGFnZUxvZ2luUmVjb3ZlcnksIGVtaXRlIHBhcmEgbyBtw6l0b2RvICdvcGVuVXJsJyBkbyBjb21wb25lbnRlICdwby1wYWdlLWxvZ2luJyAqL1xuICBAT3V0cHV0KCdwLWZvcmdvdC1wYXNzd29yZCcpIGZvcmdvdFBhc3N3b3JkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcmVjb3ZlcnlUeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfcmVjb3Zlcnk6IHN0cmluZyB8IEZ1bmN0aW9uIHwgUG9QYWdlTG9naW5SZWNvdmVyeTtcblxuICBvbkZvcmdvdFBhc3N3b3JkQ2xpY2socmVjb3ZlcnkpIHtcbiAgICB0aGlzLmZvcmdvdFBhc3N3b3JkLmVtaXQocmVjb3ZlcnkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1wb3BvdmVyLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1wb3BvdmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcG9wb3Zlci1hcnJvd1wiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXBvcG92ZXItY29udGVudFwiPlxuICAgICAgPHAgY2xhc3M9XCJwby1mb250LXRleHQtYm9sZCBwby1wYWdlLWxvZ2luLXBvcG92ZXItdGl0bGVcIj5cbiAgICAgICAge3sgbGl0ZXJhbHM/LnRpdGxlUG9wb3ZlciB9fVxuICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJwby1mb250LXRleHRcIj5cbiAgICAgICAge3sgbGl0ZXJhbHM/LmZvcmdvdFlvdXJQYXNzd29yZCB9fVxuICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJwby1mb250LXRleHRcIj5cbiAgICAgICAge3sgbGl0ZXJhbHM/LmlmWW91VHJ5SGFyZGVyIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicG8tZm9udC10ZXh0LWJvbGQgcG8tcGFnZS1sb2dpbi1wb3BvdmVyLWF0dGVtcHRzXCI+XG4gICAgICAgICAge3sgbGl0ZXJhbHM/LmF0dGVtcHRzIHwgcG9JMThuOiByZW1haW5pbmdBdHRlbXB0cyB9fSA8L3NwYW5cbiAgICAgICAgPnt7IGxpdGVyYWxzPy55b3VyVXNlcldpbGxCZUJsb2NrZWQgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxiciAvPlxuICAgICAgPHAgY2xhc3M9XCJwby1mb250LXRleHRcIj5cbiAgICAgICAge3sgbGl0ZXJhbHM/LmNyZWF0ZUFOZXdQYXNzd29yZE5vdyB9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiAqbmdJZj1cInJlY292ZXJ5XCIgY2xhc3M9XCJwby1mb250LXRleHQtYm9sZCBwby1tdC0xIHBvLXBhZ2UtbG9naW4tcG9wb3Zlci1saW5rLWNvbnRhaW5lclwiPlxuICAgICAgICA8YSAqbmdJZj1cInJlY292ZXJ5VHlwZSA9PT0gJ2ludGVybmFsTGluaydcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcG9wb3Zlci1saW5rXCIgW3JvdXRlckxpbmtdPVwicmVjb3ZlcnlcIj5cbiAgICAgICAgICB7eyBsaXRlcmFscz8uaUZvcmdvdE15UGFzc3dvcmQgfX1cbiAgICAgICAgPC9hPlxuICAgICAgICA8YSAqbmdJZj1cInJlY292ZXJ5VHlwZSA9PT0gJ2V4dGVybmFsTGluaydcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcG9wb3Zlci1saW5rXCIgW2hyZWZdPVwicmVjb3ZlcnlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICB7eyBsaXRlcmFscz8uaUZvcmdvdE15UGFzc3dvcmQgfX1cbiAgICAgICAgPC9hPlxuICAgICAgICA8YSAqbmdJZj1cIiFyZWNvdmVyeVR5cGVcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcG9wb3Zlci1saW5rXCIgKGNsaWNrKT1cIm9uRm9yZ290UGFzc3dvcmRDbGljayhyZWNvdmVyeSlcIj5cbiAgICAgICAgICB7eyBsaXRlcmFscz8uaUZvcmdvdE15UGFzc3dvcmQgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|