@vendure/admin-ui 2.0.0 → 2.0.1
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/catalog/components/product-options-editor/product-options-editor.component.d.ts +6 -0
- package/core/common/base-detail.component.d.ts +28 -0
- package/core/common/version.d.ts +1 -1
- package/core/data/providers/interceptor.d.ts +11 -1
- package/core/providers/page/page.service.d.ts +7 -0
- package/esm2022/catalog/catalog.module.mjs +2 -2
- package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +3 -3
- package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +13 -5
- package/esm2022/core/common/base-detail.component.mjs +29 -1
- package/esm2022/core/common/base-list.component.mjs +1 -1
- package/esm2022/core/common/component-registry-types.mjs +1 -1
- package/esm2022/core/common/title-setter.mjs +1 -1
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/data/providers/interceptor.mjs +32 -11
- package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +1 -1
- package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +1 -1
- package/esm2022/core/providers/local-storage/local-storage.service.mjs +1 -4
- package/esm2022/core/providers/page/page.service.mjs +5 -2
- package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +1 -1
- package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +1 -1
- package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +1 -1
- package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/data-table/data-table.component.mjs +1 -1
- package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +3 -3
- package/esm2022/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +1 -1
- package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +1 -1
- package/esm2022/customer/components/address-card/address-card.component.mjs +3 -3
- package/esm2022/customer/components/customer-list/customer-list.component.mjs +14 -10
- package/esm2022/customer/customer.module.mjs +1 -1
- package/esm2022/customer/customer.routes.mjs +2 -2
- package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +1 -1
- package/esm2022/marketing/marketing.module.mjs +1 -1
- package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +3 -3
- package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +3 -3
- package/esm2022/order/components/order-detail/order-detail.component.mjs +2 -4
- package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +3 -3
- package/esm2022/order/order.module.mjs +1 -1
- package/esm2022/order/order.routes.mjs +1 -1
- package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +2 -3
- package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +8 -8
- package/esm2022/settings/settings.module.mjs +1 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs +15 -7
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +65 -16
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-customer.mjs +16 -12
- package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs +7 -9
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +8 -9
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/package.json +14 -14
- package/static/i18n-messages/cs.json +770 -768
- package/static/i18n-messages/de.json +771 -769
- package/static/i18n-messages/en.json +771 -769
- package/static/i18n-messages/es.json +770 -768
- package/static/i18n-messages/fr.json +770 -768
- package/static/i18n-messages/it.json +770 -768
- package/static/i18n-messages/pl.json +770 -768
- package/static/i18n-messages/pt_BR.json +770 -768
- package/static/i18n-messages/pt_PT.json +770 -768
- package/static/i18n-messages/ru.json +770 -768
- package/static/i18n-messages/uk.json +770 -768
- package/static/i18n-messages/zh_Hans.json +770 -768
- package/static/i18n-messages/zh_Hant.json +770 -768
- package/static/styles/global/_buttons.scss +24 -0
- package/static/theme.min.css +1 -1
|
@@ -272,9 +272,7 @@ export class OrderDetailComponent extends TypedBaseDetailComponent {
|
|
|
272
272
|
return this.orderTransitionService.transitionToPreModifyingState(order.id, order.nextStates);
|
|
273
273
|
}
|
|
274
274
|
else {
|
|
275
|
-
return
|
|
276
|
-
.transitionToState(this.id, 'PaymentSettled')
|
|
277
|
-
.pipe(mapTo('PaymentSettled'));
|
|
275
|
+
return of('PaymentSettled');
|
|
278
276
|
}
|
|
279
277
|
case 'ManualPaymentStateError':
|
|
280
278
|
this.notificationService.error(addManualPaymentToOrder.message);
|
|
@@ -551,4 +549,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
551
549
|
type: Component,
|
|
552
550
|
args: [{ selector: 'vdr-order-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left> </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"button primary mr-1\"\r\n *ngIf=\"\r\n order.type !== 'Aggregate' &&\r\n (order.state === 'ArrangingPayment' || order.state === 'ArrangingAdditionalPayment') &&\r\n (hasUnsettledModifications(order) || 0 < outstandingPaymentAmount(order))\r\n \"\r\n (click)=\"addManualPayment(order)\"\r\n >\r\n {{ 'order.add-payment-to-order' | translate }}\r\n ({{ outstandingPaymentAmount(order) | localeCurrency : order.currencyCode }})\r\n </button>\r\n <button\r\n class=\"button primary mr-1\"\r\n *ngIf=\"\r\n order.type !== 'Aggregate' &&\r\n order.active === false &&\r\n order.state !== 'ArrangingAdditionalPayment' &&\r\n order.state !== 'ArrangingPayment' &&\r\n 0 < outstandingPaymentAmount(order)\r\n \"\r\n (click)=\"transitionToState('ArrangingAdditionalPayment')\"\r\n >\r\n {{ 'order.arrange-additional-payment' | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"order.type !== 'Aggregate'\"\r\n class=\"button primary mr-1\"\r\n (click)=\"fulfillOrder()\"\r\n [disabled]=\"!canAddFulfillment(order)\"\r\n >\r\n {{ 'order.fulfill-order' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <ng-container\r\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Modifying')\"\r\n >\r\n <button type=\"button\" vdrDropdownItem (click)=\"transitionToModifying()\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'order.modify-order' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n </ng-container>\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Cancelled')\"\r\n (click)=\"cancelOrRefund(order)\"\r\n >\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n <ng-container *ngIf=\"orderHasSettledPayments(order); else cancelOnly\">\r\n {{ 'order.refund-and-cancel-order' | translate }}\r\n </ng-container>\r\n <ng-template #cancelOnly>\r\n {{ 'order.cancel-order' | translate }}\r\n </ng-template>\r\n </button>\r\n\r\n <ng-container *ngIf=\"(nextStates$ | async)?.length\">\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n *ngFor=\"let nextState of nextStates$ | async\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"transitionToState(nextState)\"\r\n >\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{\r\n 'order.transition-to-state'\r\n | translate : { state: (nextState | stateI18nToken | translate) }\r\n }}\r\n </button>\r\n </ng-container>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" vdrDropdownItem (click)=\"manuallyTransitionToState(order)\">\r\n <clr-icon shape=\"step-forward-2\" class=\"is-warning\"></clr-icon>\r\n {{ 'order.manually-transition-to-state' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <vdr-order-state-label [state]=\"order.state\">\r\n <button\r\n class=\"icon-button\"\r\n (click)=\"openStateDiagram()\"\r\n [title]=\"'order.order-state-diagram' | translate\"\r\n >\r\n <clr-icon shape=\"list\"></clr-icon>\r\n </button>\r\n </vdr-order-state-label>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.customer' | translate\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n <vdr-labeled-data\r\n class=\"mt-2\"\r\n [label]=\"'order.shipping-address' | translate\"\r\n *ngIf=\"getOrderAddressLines(order.shippingAddress).length\"\r\n >\r\n <vdr-formatted-address [address]=\"order.shippingAddress\" class=\"mt-1\"></vdr-formatted-address>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data\r\n [label]=\"'order.billing-address' | translate\"\r\n *ngIf=\"getOrderAddressLines(order.billingAddress).length\"\r\n >\r\n <vdr-formatted-address [address]=\"order.billingAddress\" class=\"mt-1\"></vdr-formatted-address>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.payments' | translate\" *ngIf=\"order.payments?.length\">\r\n <vdr-order-payment-card\r\n *ngFor=\"let payment of order.payments\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [payment]=\"payment\"\r\n (settlePayment)=\"settlePayment($event)\"\r\n (transitionPaymentState)=\"transitionPaymentState($event)\"\r\n (settleRefund)=\"settleRefund($event)\"\r\n ></vdr-order-payment-card>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"order.fulfillments?.length\">\r\n <vdr-fulfillment-card\r\n *ngFor=\"let fulfillment of order.fulfillments\"\r\n [fulfillment]=\"fulfillment\"\r\n [order]=\"order\"\r\n (transitionState)=\"transitionFulfillment(fulfillment.id, $event)\"\r\n ></vdr-fulfillment-card>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block>\r\n <vdr-seller-orders-card\r\n class=\"mb-2\"\r\n *ngIf=\"order.sellerOrders.length\"\r\n [orderId]=\"order.id\"\r\n ></vdr-seller-orders-card>\r\n <vdr-card [paddingX]=\"false\">\r\n <vdr-order-table\r\n [order]=\"order\"\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n ></vdr-order-table>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.tax-summary' | translate\" [paddingX]=\"false\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'common.description' | translate }}</th>\r\n <th>{{ 'order.tax-rate' | translate }}</th>\r\n <th>{{ 'order.tax-base' | translate }}</th>\r\n <th>{{ 'order.tax-total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of order.taxSummary\">\r\n <td>{{ row.description }}</td>\r\n <td>{{ row.taxRate / 100 | percent }}</td>\r\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\r\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </vdr-card>\r\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Order\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!('UpdateOrder' | hasPermission)\"\r\n />\r\n <button\r\n class=\"button primary\"\r\n (click)=\"updateCustomFields()\"\r\n [disabled]=\"\r\n detailForm.get('customFields')?.pristine || detailForm.get('customFields')?.invalid\r\n \"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"order-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'order.order-history' | translate\">\r\n <vdr-order-history\r\n [order]=\"order\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNote($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-order-history>\r\n </vdr-card>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\n", styles: [".shipping-address{list-style-type:none;line-height:1.3em}.order-cards h6{margin-top:6px;color:var(--color-text-200)}\n"] }]
|
|
553
551
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DataService }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i2.OrderTransitionService }, { type: i3.FormBuilder }]; } });
|
|
554
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvb3JkZXIvc3JjL2NvbXBvbmVudHMvb3JkZXItZGV0YWlsL29yZGVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWRldGFpbC9vcmRlci1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCx1QkFBdUIsRUFNdkIscUJBQXFCLEVBSXJCLFNBQVMsRUFFVCx3QkFBd0IsR0FDM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZ0NBQWdD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QUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkc7SUFDTCxDQUFDOzhHQTdrQlEsb0JBQW9CO2tHQUFwQixvQkFBb0IsK0VDakRqQyw4cVVBb05BOzsyRkRuS2Esb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcclxuaW1wb3J0IHtcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBGdWxmaWxsbWVudEZyYWdtZW50LFxyXG4gICAgR2V0T3JkZXJIaXN0b3J5UXVlcnksXHJcbiAgICBHZXRPcmRlclF1ZXJ5LFxyXG4gICAgTW9kYWxTZXJ2aWNlLFxyXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIE9SREVSX0RFVEFJTF9GUkFHTUVOVCxcclxuICAgIE9yZGVyRGV0YWlsRnJhZ21lbnQsXHJcbiAgICBPcmRlckRldGFpbFF1ZXJ5RG9jdW1lbnQsXHJcbiAgICBSZWZ1bmQsXHJcbiAgICBTb3J0T3JkZXIsXHJcbiAgICBUaW1lbGluZUhpc3RvcnlFbnRyeSxcclxuICAgIFR5cGVkQmFzZURldGFpbENvbXBvbmVudCxcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIsIHN1bW1hdGUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XHJcbmltcG9ydCB7IGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgbWFwVG8sIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgT3JkZXJUcmFuc2l0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9vcmRlci10cmFuc2l0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRNYW51YWxQYXltZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLW1hbnVhbC1wYXltZW50LWRpYWxvZy9hZGQtbWFudWFsLXBheW1lbnQtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbmNlbE9yZGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FuY2VsLW9yZGVyLWRpYWxvZy9jYW5jZWwtb3JkZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ1bGZpbGxPcmRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2Z1bGZpbGwtb3JkZXItZGlhbG9nL2Z1bGZpbGwtb3JkZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9yZGVyUHJvY2Vzc0dyYXBoRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vb3JkZXItcHJvY2Vzcy1ncmFwaC1kaWFsb2cvb3JkZXItcHJvY2Vzcy1ncmFwaC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVmdW5kT3JkZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9yZWZ1bmQtb3JkZXItZGlhbG9nL3JlZnVuZC1vcmRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2V0dGxlUmVmdW5kRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vc2V0dGxlLXJlZnVuZC1kaWFsb2cvc2V0dGxlLXJlZnVuZC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbnR5cGUgUGF5bWVudCA9IE5vbk51bGxhYmxlPE9yZGVyRGV0YWlsRnJhZ21lbnRbJ3BheW1lbnRzJ10+W251bWJlcl07XHJcblxyXG5leHBvcnQgY29uc3QgT1JERVJfREVUQUlMX1FVRVJZID0gZ3FsYFxyXG4gICAgcXVlcnkgT3JkZXJEZXRhaWxRdWVyeSgkaWQ6IElEISkge1xyXG4gICAgICAgIG9yZGVyKGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgLi4uT3JkZXJEZXRhaWxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke09SREVSX0RFVEFJTF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItb3JkZXItZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9vcmRlci1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vb3JkZXItZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyRGV0YWlsQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIFR5cGVkQmFzZURldGFpbENvbXBvbmVudDx0eXBlb2YgT3JkZXJEZXRhaWxRdWVyeURvY3VtZW50LCAnb3JkZXInPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgICBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdPcmRlcicpO1xyXG4gICAgb3JkZXJMaW5lQ3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnT3JkZXJMaW5lJyk7XHJcbiAgICBkZXRhaWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcy5yZWR1Y2UoKGhhc2gsIGZpZWxkKSA9PiAoeyAuLi5oYXNoLCBbZmllbGQubmFtZV06ICcnIH0pLCB7fSksXHJcbiAgICAgICAgKSxcclxuICAgIH0pO1xyXG4gICAgaGlzdG9yeSQ6IE9ic2VydmFibGU8Tm9uTnVsbGFibGU8R2V0T3JkZXJIaXN0b3J5UXVlcnlbJ29yZGVyJ10+WydoaXN0b3J5J11bJ2l0ZW1zJ10gfCB1bmRlZmluZWQ+O1xyXG4gICAgbmV4dFN0YXRlcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xyXG4gICAgZmV0Y2hIaXN0b3J5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFN0YXRlcyA9IFtcclxuICAgICAgICAnQWRkaW5nSXRlbXMnLFxyXG4gICAgICAgICdBcnJhbmdpbmdQYXltZW50JyxcclxuICAgICAgICAnUGF5bWVudEF1dGhvcml6ZWQnLFxyXG4gICAgICAgICdQYXltZW50U2V0dGxlZCcsXHJcbiAgICAgICAgJ1BhcnRpYWxseVNoaXBwZWQnLFxyXG4gICAgICAgICdTaGlwcGVkJyxcclxuICAgICAgICAnUGFydGlhbGx5RGVsaXZlcmVkJyxcclxuICAgICAgICAnRGVsaXZlcmVkJyxcclxuICAgICAgICAnQ2FuY2VsbGVkJyxcclxuICAgICAgICAnTW9kaWZ5aW5nJyxcclxuICAgICAgICAnQXJyYW5naW5nQWRkaXRpb25hbFBheW1lbnQnLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgb3JkZXJUcmFuc2l0aW9uU2VydmljZTogT3JkZXJUcmFuc2l0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9yZGVyID0+IHtcclxuICAgICAgICAgICAgaWYgKG9yZGVyLnN0YXRlID09PSAnTW9kaWZ5aW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycsICdtb2RpZnknXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5JCA9IHRoaXMuZmV0Y2hIaXN0b3J5LnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgLmdldE9yZGVySGlzdG9yeSh0aGlzLmlkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogU29ydE9yZGVyLkRFU0MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwU3RyZWFtKGRhdGEgPT4gZGF0YS5vcmRlcj8uaGlzdG9yeS5pdGVtcyksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm5leHRTdGF0ZXMkID0gdGhpcy5lbnRpdHkkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChvcmRlciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0luQ3VzdG9tU3RhdGUgPSAhdGhpcy5kZWZhdWx0U3RhdGVzLmluY2x1ZGVzKG9yZGVyLnN0YXRlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0luQ3VzdG9tU3RhdGVcclxuICAgICAgICAgICAgICAgICAgICA/IG9yZGVyLm5leHRTdGF0ZXNcclxuICAgICAgICAgICAgICAgICAgICA6IG9yZGVyLm5leHRTdGF0ZXMuZmlsdGVyKHMgPT4gIXRoaXMuZGVmYXVsdFN0YXRlcy5pbmNsdWRlcyhzKSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblN0YXRlRGlhZ3JhbSgpIHtcclxuICAgICAgICB0aGlzLmVudGl0eSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG9yZGVyID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZnJvbUNvbXBvbmVudChPcmRlclByb2Nlc3NHcmFwaERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVTdGF0ZTogb3JkZXIuc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2l0aW9uVG9TdGF0ZShzdGF0ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlci50cmFuc2l0aW9uVG9TdGF0ZSh0aGlzLmlkLCBzdGF0ZSkuc3Vic2NyaWJlKCh7IHRyYW5zaXRpb25PcmRlclRvU3RhdGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRyYW5zaXRpb25PcmRlclRvU3RhdGU/Ll9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdvcmRlci50cmFuc2l0aW9uZWQtdG8tc3RhdGUtc3VjY2VzcycpLCB7IHN0YXRlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyU3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0cmFuc2l0aW9uT3JkZXJUb1N0YXRlLnRyYW5zaXRpb25FcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBtYW51YWxseVRyYW5zaXRpb25Ub1N0YXRlKG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KSB7XHJcbiAgICAgICAgdGhpcy5vcmRlclRyYW5zaXRpb25TZXJ2aWNlXHJcbiAgICAgICAgICAgIC5tYW51YWxseVRyYW5zaXRpb25Ub1N0YXRlKHtcclxuICAgICAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxyXG4gICAgICAgICAgICAgICAgbmV4dFN0YXRlczogb3JkZXIubmV4dFN0YXRlcyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbGxhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXygnb3JkZXIubWFudWFsbHktdHJhbnNpdGlvbi10by1zdGF0ZS1tZXNzYWdlJyksXHJcbiAgICAgICAgICAgICAgICByZXRyeTogMCxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zaXRpb25Ub01vZGlmeWluZygpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXHJcbiAgICAgICAgICAgIC50cmFuc2l0aW9uVG9TdGF0ZSh0aGlzLmlkLCAnTW9kaWZ5aW5nJylcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyB0cmFuc2l0aW9uT3JkZXJUb1N0YXRlIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNpdGlvbk9yZGVyVG9TdGF0ZT8uX190eXBlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuL21vZGlmeSddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyU3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodHJhbnNpdGlvbk9yZGVyVG9TdGF0ZS50cmFuc2l0aW9uRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDdXN0b21GaWVsZHMoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlclxyXG4gICAgICAgICAgICAudXBkYXRlT3JkZXJDdXN0b21GaWVsZHMoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZGV0YWlsRm9ybS52YWx1ZS5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7IGVudGl0eTogJ09yZGVyJyB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3JkZXJBZGRyZXNzTGluZXMob3JkZXJBZGRyZXNzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZ1tdIHtcclxuICAgICAgICBpZiAoIW9yZGVyQWRkcmVzcykge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKG9yZGVyQWRkcmVzcylcclxuICAgICAgICAgICAgLmZpbHRlcih2YWwgPT4gdmFsICE9PSAnT3JkZXJBZGRyZXNzJylcclxuICAgICAgICAgICAgLmZpbHRlcihsaW5lID0+ICEhbGluZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dGxlUGF5bWVudChwYXltZW50OiBQYXltZW50KSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlci5zZXR0bGVQYXltZW50KHBheW1lbnQuaWQpLnN1YnNjcmliZSgoeyBzZXR0bGVQYXltZW50IH0pID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoIChzZXR0bGVQYXltZW50Ll9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0bGVQYXltZW50LnN0YXRlID09PSAnU2V0dGxlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIuc2V0dGxlLXBheW1lbnQtc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnb3JkZXIuc2V0dGxlLXBheW1lbnQtZXJyb3InKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuZ2V0T3JkZXIodGhpcy5pZCkuc2luZ2xlJC5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdPcmRlclN0YXRlVHJhbnNpdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnRTdGF0ZVRyYW5zaXRpb25FcnJvcic6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdTZXR0bGVQYXltZW50RXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihzZXR0bGVQYXltZW50Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNpdGlvblBheW1lbnRTdGF0ZSh7IHBheW1lbnQsIHN0YXRlIH06IHsgcGF5bWVudDogUGF5bWVudDsgc3RhdGU6IHN0cmluZyB9KSB7XHJcbiAgICAgICAgaWYgKHN0YXRlID09PSAnQ2FuY2VsbGVkJykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNhbmNlbFBheW1lbnQocGF5bWVudC5pZCkuc3Vic2NyaWJlKCh7IGNhbmNlbFBheW1lbnQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChjYW5jZWxQYXltZW50Ll9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIudHJhbnNpdGlvbmVkLXBheW1lbnQtdG8tc3RhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuZ2V0T3JkZXIodGhpcy5pZCkuc2luZ2xlJC5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50U3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoY2FuY2VsUGF5bWVudC50cmFuc2l0aW9uRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdDYW5jZWxQYXltZW50RXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoY2FuY2VsUGF5bWVudC5wYXltZW50RXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgICAgIC50cmFuc2l0aW9uUGF5bWVudFRvU3RhdGUocGF5bWVudC5pZCwgc3RhdGUpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHRyYW5zaXRpb25QYXltZW50VG9TdGF0ZSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cmFuc2l0aW9uUGF5bWVudFRvU3RhdGUuX190eXBlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oJ29yZGVyLnRyYW5zaXRpb25lZC1wYXltZW50LXRvLXN0YXRlLXN1Y2Nlc3MnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlci5nZXRPcmRlcih0aGlzLmlkKS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnRTdGF0ZVRyYW5zaXRpb25FcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodHJhbnNpdGlvblBheW1lbnRUb1N0YXRlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNhbkFkZEZ1bGZpbGxtZW50KG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgYWxsRnVsZmlsbG1lbnRMaW5lczogRnVsZmlsbG1lbnRGcmFnbWVudFsnbGluZXMnXSA9IChvcmRlci5mdWxmaWxsbWVudHMgPz8gW10pLnJlZHVjZShcclxuICAgICAgICAgICAgKGFsbCwgZnVsZmlsbG1lbnQpID0+IFsuLi5hbGwsIC4uLmZ1bGZpbGxtZW50LmxpbmVzXSxcclxuICAgICAgICAgICAgW10gYXMgRnVsZmlsbG1lbnRGcmFnbWVudFsnbGluZXMnXSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBhbGxJdGVtc0Z1bGZpbGxlZCA9IHRydWU7XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG9yZGVyLmxpbmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsRnVsZmlsbGVkQ291bnQgPSBhbGxGdWxmaWxsbWVudExpbmVzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHJvdyA9PiByb3cub3JkZXJMaW5lSWQgPT09IGxpbmUuaWQpXHJcbiAgICAgICAgICAgICAgICAucmVkdWNlKChzdW0sIHJvdykgPT4gc3VtICsgcm93LnF1YW50aXR5LCAwKTtcclxuICAgICAgICAgICAgaWYgKHRvdGFsRnVsZmlsbGVkQ291bnQgPCBsaW5lLnF1YW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICBhbGxJdGVtc0Z1bGZpbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICFhbGxJdGVtc0Z1bGZpbGxlZCAmJlxyXG4gICAgICAgICAgICAhdGhpcy5oYXNVbnNldHRsZWRNb2RpZmljYXRpb25zKG9yZGVyKSAmJlxyXG4gICAgICAgICAgICB0aGlzLm91dHN0YW5kaW5nUGF5bWVudEFtb3VudChvcmRlcikgPT09IDAgJiZcclxuICAgICAgICAgICAgKG9yZGVyLm5leHRTdGF0ZXMuaW5jbHVkZXMoJ1NoaXBwZWQnKSB8fFxyXG4gICAgICAgICAgICAgICAgb3JkZXIubmV4dFN0YXRlcy5pbmNsdWRlcygnUGFydGlhbGx5U2hpcHBlZCcpIHx8XHJcbiAgICAgICAgICAgICAgICBvcmRlci5uZXh0U3RhdGVzLmluY2x1ZGVzKCdEZWxpdmVyZWQnKSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1Vuc2V0dGxlZE1vZGlmaWNhdGlvbnMob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gMCA8IG9yZGVyLm1vZGlmaWNhdGlvbnMuZmlsdGVyKG0gPT4gIW0uaXNTZXR0bGVkKS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3V0c3RhbmRpbmdNb2RpZmljYXRpb25BbW91bnQob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBzdW1tYXRlKFxyXG4gICAgICAgICAgICBvcmRlci5tb2RpZmljYXRpb25zLmZpbHRlcihtID0+ICFtLmlzU2V0dGxlZCksXHJcbiAgICAgICAgICAgICdwcmljZUNoYW5nZScsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvdXRzdGFuZGluZ1BheW1lbnRBbW91bnQob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IHBheW1lbnRJc1ZhbGlkID0gKHA6IFBheW1lbnQpOiBib29sZWFuID0+XHJcbiAgICAgICAgICAgIHAuc3RhdGUgIT09ICdDYW5jZWxsZWQnICYmIHAuc3RhdGUgIT09ICdEZWNsaW5lZCcgJiYgcC5zdGF0ZSAhPT0gJ0Vycm9yJztcclxuXHJcbiAgICAgICAgbGV0IGFtb3VudENvdmVyZWQgPSAwO1xyXG4gICAgICAgIGZvciAoY29uc3QgcGF5bWVudCBvZiBvcmRlci5wYXltZW50cz8uZmlsdGVyKHBheW1lbnRJc1ZhbGlkKSA/PyBbXSkge1xyXG4gICAgICAgICAgICBjb25zdCByZWZ1bmRzID0gcGF5bWVudC5yZWZ1bmRzLmZpbHRlcihyID0+IHIuc3RhdGUgIT09ICdGYWlsZWQnKSA/PyBbXTtcclxuICAgICAgICAgICAgY29uc3QgcmVmdW5kc1RvdGFsID0gc3VtbWF0ZShyZWZ1bmRzIGFzIEFycmF5PFJlcXVpcmVkPFJlZnVuZD4+LCAndG90YWwnKTtcclxuICAgICAgICAgICAgYW1vdW50Q292ZXJlZCArPSBwYXltZW50LmFtb3VudCAtIHJlZnVuZHNUb3RhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9yZGVyLnRvdGFsV2l0aFRheCAtIGFtb3VudENvdmVyZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTWFudWFsUGF5bWVudChvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHByaW9yU3RhdGUgPSBvcmRlci5zdGF0ZTtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChBZGRNYW51YWxQYXltZW50RGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG91dHN0YW5kaW5nQW1vdW50OiB0aGlzLm91dHN0YW5kaW5nUGF5bWVudEFtb3VudChvcmRlciksXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiBvcmRlci5jdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuYWRkTWFudWFsUGF5bWVudFRvT3JkZXIoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJJZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSWQ6IHJlc3VsdC50cmFuc2FjdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiByZXN1bHQubWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3VsdC5tZXRhZGF0YSB8fCB7fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IGFkZE1hbnVhbFBheW1lbnRUb09yZGVyIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFkZE1hbnVhbFBheW1lbnRUb09yZGVyLl9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnT3JkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIuYWRkLXBheW1lbnQtdG8tb3JkZXItc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmlvclN0YXRlID09PSAnQXJyYW5naW5nQWRkaXRpb25hbFBheW1lbnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJUcmFuc2l0aW9uU2VydmljZS50cmFuc2l0aW9uVG9QcmVNb2RpZnlpbmdTdGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLm5leHRTdGF0ZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zaXRpb25Ub1N0YXRlKHRoaXMuaWQsICdQYXltZW50U2V0dGxlZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcFRvKCdQYXltZW50U2V0dGxlZCcpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnTWFudWFsUGF5bWVudFN0YXRlRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGFkZE1hbnVhbFBheW1lbnRUb09yZGVyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hPcmRlcih7IHJlc3VsdCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVsZmlsbE9yZGVyKCkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5JFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAob3JkZXIgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5mcm9tQ29tcG9uZW50KEZ1bGZpbGxPcmRlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAneGwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChpbnB1dCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNyZWF0ZUZ1bGZpbGxtZW50KGlucHV0KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gdGhpcy5yZWZldGNoT3JkZXIocmVzdWx0KS5waXBlKG1hcFRvKHJlc3VsdCkpKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBhZGRGdWxmaWxsbWVudFRvT3JkZXIgfSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFkZEZ1bGZpbGxtZW50VG9PcmRlci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Z1bGZpbGxtZW50JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLmNyZWF0ZS1mdWxmaWxsbWVudC1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtcHR5T3JkZXJMaW5lU2VsZWN0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbnN1ZmZpY2llbnRTdG9ja09uSGFuZEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSXRlbXNBbHJlYWR5RnVsZmlsbGVkRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbnZhbGlkRnVsZmlsbG1lbnRIYW5kbGVyRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGFkZEZ1bGZpbGxtZW50VG9PcmRlci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdGdWxmaWxsbWVudFN0YXRlVHJhbnNpdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihhZGRGdWxmaWxsbWVudFRvT3JkZXIudHJhbnNpdGlvbkVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDcmVhdGVGdWxmaWxsbWVudEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihhZGRGdWxmaWxsbWVudFRvT3JkZXIuZnVsZmlsbG1lbnRIYW5kbGVyRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KGFkZEZ1bGZpbGxtZW50VG9PcmRlcikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihhZGRGdWxmaWxsbWVudFRvT3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNpdGlvbkZ1bGZpbGxtZW50KGlkOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXHJcbiAgICAgICAgICAgIC50cmFuc2l0aW9uRnVsZmlsbG1lbnRUb1N0YXRlKGlkLCBzdGF0ZSlcclxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlc3VsdCA9PiB0aGlzLnJlZmV0Y2hPcmRlcihyZXN1bHQpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdvcmRlci5zdWNjZXNzZnVsbHktdXBkYXRlZC1mdWxmaWxsbWVudCcpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsT3JSZWZ1bmQob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpIHtcclxuICAgICAgICBjb25zdCBpc1JlZnVuZGFibGUgPSB0aGlzLm9yZGVySGFzU2V0dGxlZFBheW1lbnRzKG9yZGVyKTtcclxuICAgICAgICBpZiAob3JkZXIuc3RhdGUgPT09ICdQYXltZW50QXV0aG9yaXplZCcgfHwgb3JkZXIuYWN0aXZlID09PSB0cnVlIHx8ICFpc1JlZnVuZGFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxPcmRlcihvcmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZ1bmRPcmRlcihvcmRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldHRsZVJlZnVuZChyZWZ1bmQ6IFBheW1lbnRbJ3JlZnVuZHMnXVtudW1iZXJdKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoU2V0dGxlUmVmdW5kRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiAnbWQnLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmdW5kLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodHJhbnNhY3Rpb25JZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuc2V0dGxlUmVmdW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHJlZnVuZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoTWFwKHJlc3VsdCA9PiB0aGlzLnJlZmV0Y2hPcmRlcihyZXN1bHQpKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIuc2V0dGxlLXJlZnVuZC1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROb3RlKGV2ZW50OiB7IG5vdGU6IHN0cmluZzsgaXNQdWJsaWM6IGJvb2xlYW4gfSkge1xyXG4gICAgICAgIGNvbnN0IHsgbm90ZSwgaXNQdWJsaWMgfSA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgLmFkZE5vdGVUb09yZGVyKHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgbm90ZSxcclxuICAgICAgICAgICAgICAgIGlzUHVibGljLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAocmVzdWx0ID0+IHRoaXMucmVmZXRjaE9yZGVyKHJlc3VsdCkpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVOb3RlKGVudHJ5OiBUaW1lbGluZUhpc3RvcnlFbnRyeSkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEVkaXROb3RlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlQcml2YWN5Q29udHJvbHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGVJc1ByaXZhdGU6ICFlbnRyeS5pc1B1YmxpYyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlci51cGRhdGVPcmRlck5vdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZUlkOiBlbnRyeS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHVibGljOiAhcmVzdWx0LmlzUHJpdmF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IHJlc3VsdC5ub3RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnTm90ZScsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlTm90ZShlbnRyeTogVGltZWxpbmVIaXN0b3J5RW50cnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmRpYWxvZyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXygnY29tbW9uLmNvbmZpcm0tZGVsZXRlLW5vdGUnKSxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGVudHJ5LmRhdGEubm90ZSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdzZWNvbmRhcnknLCBsYWJlbDogXygnY29tbW9uLmNhbmNlbCcpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcChyZXMgPT4gKHJlcyA/IHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuZGVsZXRlT3JkZXJOb3RlKGVudHJ5LmlkKSA6IEVNUFRZKSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnTm90ZScsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3JkZXJIYXNTZXR0bGVkUGF5bWVudHMob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISFvcmRlci5wYXltZW50cz8uZmluZChwID0+IHAuc3RhdGUgPT09ICdTZXR0bGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYW5jZWxPcmRlcihvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KENhbmNlbE9yZGVyRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiAneGwnLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChpbnB1dCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNhbmNlbE9yZGVyKGlucHV0KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gdGhpcy5yZWZldGNoT3JkZXIocmVzdWx0KSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLmNhbmNlbGxlZC1vcmRlci1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlZnVuZE9yZGVyKG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoUmVmdW5kT3JkZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIHNpemU6ICd4bCcsXHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBvcmRlcixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGlucHV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNhbmNlbC5saW5lcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNhbmNlbE9yZGVyKGlucHV0LmNhbmNlbCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5jYW5jZWxPcmRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmZXRjaE9yZGVyKHJlc3VsdCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdvcmRlci5jYW5jZWxsZWQtb3JkZXItc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ2FuY2VsQWN0aXZlT3JkZXJFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1F1YW50aXR5VG9vR3JlYXRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpcGxlT3JkZXJFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyU3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFbXB0eU9yZGVyTGluZVNlbGVjdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbaW5wdXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGlucHV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQucmVmdW5kLmxpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZnVuZE9yZGVyKGlucHV0LnJlZnVuZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnJlZnVuZE9yZGVyKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt1bmRlZmluZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1JlZnVuZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hPcmRlcihyZXN1bHQpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0ZSA9PT0gJ0ZhaWxlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnb3JkZXIucmVmdW5kLW9yZGVyLWZhaWxlZCcpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIucmVmdW5kLW9yZGVyLXN1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWxyZWFkeVJlZnVuZGVkRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOb3RoaW5nVG9SZWZ1bmRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnRPcmRlck1pc21hdGNoRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSZWZ1bmRPcmRlclN0YXRlRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSZWZ1bmRTdGF0ZVRyYW5zaXRpb25FcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlZmV0Y2hPcmRlcihyZXN1bHQ6IG9iamVjdCB8IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8R2V0T3JkZXJRdWVyeSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmdldE9yZGVyKHRoaXMuaWQpLnNpbmdsZSQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKGVudGl0eTogT3JkZXJEZXRhaWxGcmFnbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDdXN0b21GaWVsZEZvcm1WYWx1ZXModGhpcy5jdXN0b21GaWVsZHMsIHRoaXMuZGV0YWlsRm9ybS5nZXQoWydjdXN0b21GaWVsZHMnXSksIGVudGl0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjx2ZHItcGFnZS1ibG9jaz5cclxuICAgIDx2ZHItYWN0aW9uLWJhciAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBvcmRlclwiPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdD4gPC92ZHItYWItbGVmdD5cclxuXHJcbiAgICAgICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJvcmRlci1kZXRhaWxcIj48L3Zkci1hY3Rpb24tYmFyLWl0ZW1zPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5IG1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcmRlci50eXBlICE9PSAnQWdncmVnYXRlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChvcmRlci5zdGF0ZSA9PT0gJ0FycmFuZ2luZ1BheW1lbnQnIHx8IG9yZGVyLnN0YXRlID09PSAnQXJyYW5naW5nQWRkaXRpb25hbFBheW1lbnQnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoYXNVbnNldHRsZWRNb2RpZmljYXRpb25zKG9yZGVyKSB8fCAwIDwgb3V0c3RhbmRpbmdQYXltZW50QW1vdW50KG9yZGVyKSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTWFudWFsUGF5bWVudChvcmRlcilcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIuYWRkLXBheW1lbnQtdG8tb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAoe3sgb3V0c3RhbmRpbmdQYXltZW50QW1vdW50KG9yZGVyKSB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19KVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBtci0xXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIudHlwZSAhPT0gJ0FnZ3JlZ2F0ZScgJiZcclxuICAgICAgICAgICAgICAgICAgICBvcmRlci5hY3RpdmUgPT09IGZhbHNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIuc3RhdGUgIT09ICdBcnJhbmdpbmdBZGRpdGlvbmFsUGF5bWVudCcgJiZcclxuICAgICAgICAgICAgICAgICAgICBvcmRlci5zdGF0ZSAhPT0gJ0FycmFuZ2luZ1BheW1lbnQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgMCA8IG91dHN0YW5kaW5nUGF5bWVudEFtb3VudChvcmRlcilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidHJhbnNpdGlvblRvU3RhdGUoJ0FycmFuZ2luZ0FkZGl0aW9uYWxQYXltZW50JylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIuYXJyYW5nZS1hZGRpdGlvbmFsLXBheW1lbnQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyLnR5cGUgIT09ICdBZ2dyZWdhdGUnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIHByaW1hcnkgbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZnVsZmlsbE9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRGdWxmaWxsbWVudChvcmRlcilcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIuZnVsZmlsbC1vcmRlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idXR0b25cIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWxsaXBzaXMtdmVydGljYWxcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3JkZXIudHlwZSAhPT0gJ0FnZ3JlZ2F0ZScgJiYgb3JkZXIubmV4dFN0YXRlcy5pbmNsdWRlcygnTW9kaWZ5aW5nJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmRyRHJvcGRvd25JdGVtIChjbGljayk9XCJ0cmFuc2l0aW9uVG9Nb2RpZnlpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGVuY2lsXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5tb2RpZnktb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyLnR5cGUgIT09ICdBZ2dyZWdhdGUnICYmIG9yZGVyLm5leHRTdGF0ZXMuaW5jbHVkZXMoJ0NhbmNlbGxlZCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbE9yUmVmdW5kKG9yZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJlcnJvci1zdGFuZGFyZFwiIGNsYXNzPVwiaXMtZXJyb3JcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3JkZXJIYXNTZXR0bGVkUGF5bWVudHMob3JkZXIpOyBlbHNlIGNhbmNlbE9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5yZWZ1bmQtYW5kLWNhbmNlbC1vcmRlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FuY2VsT25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5jYW5jZWwtb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIobmV4dFN0YXRlcyQgfCBhc3luYyk/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbmV4dFN0YXRlIG9mIG5leHRTdGF0ZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmFuc2l0aW9uVG9TdGF0ZShuZXh0U3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwic3RlcC1mb3J3YXJkLTJcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JkZXIudHJhbnNpdGlvbi10by1zdGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGUgOiB7IHN0YXRlOiAobmV4dFN0YXRlIHwgc3RhdGVJMThuVG9rZW4gfCB0cmFuc2xhdGUpIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmRyRHJvcGRvd25JdGVtIChjbGljayk9XCJtYW51YWxseVRyYW5zaXRpb25Ub1N0YXRlKG9yZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJzdGVwLWZvcndhcmQtMlwiIGNsYXNzPVwiaXMtd2FybmluZ1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5tYW51YWxseS10cmFuc2l0aW9uLXRvLXN0YXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XHJcbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG5cclxuPHZkci1wYWdlLWRldGFpbC1sYXlvdXQgKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgb3JkZXJcIj5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItb3JkZXItc3RhdGUtbGFiZWwgW3N0YXRlXT1cIm9yZGVyLnN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TdGF0ZURpYWdyYW0oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidvcmRlci5vcmRlci1zdGF0ZS1kaWFncmFtJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwibGlzdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC92ZHItb3JkZXItc3RhdGUtbGFiZWw+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5jdXN0b21lcicgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPHZkci1jdXN0b21lci1sYWJlbCBbY3VzdG9tZXJdPVwib3JkZXIuY3VzdG9tZXJcIj48L3Zkci1jdXN0b21lci1sYWJlbD5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGFcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ29yZGVyLnNoaXBwaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0T3JkZXJBZGRyZXNzTGluZXMob3JkZXIuc2hpcHBpbmdBZGRyZXNzKS5sZW5ndGhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWZvcm1hdHRlZC1hZGRyZXNzIFthZGRyZXNzXT1cIm9yZGVyLnNoaXBwaW5nQWRkcmVzc1wiIGNsYXNzPVwibXQtMVwiPjwvdmRyLWZvcm1hdHRlZC1hZGRyZXNzPlxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ29yZGVyLmJpbGxpbmctYWRkcmVzcycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRPcmRlckFkZHJlc3NMaW5lcyhvcmRlci5iaWxsaW5nQWRkcmVzcykubGVuZ3RoXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtYXR0ZWQtYWRkcmVzcyBbYWRkcmVzc109XCJvcmRlci5iaWxsaW5nQWRkcmVzc1wiIGNsYXNzPVwibXQtMVwiPjwvdmRyLWZvcm1hdHRlZC1hZGRyZXNzPlxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5wYXltZW50cycgfCB0cmFuc2xhdGVcIiAqbmdJZj1cIm9yZGVyLnBheW1lbnRzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPHZkci1vcmRlci1wYXltZW50LWNhcmRcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYXltZW50IG9mIG9yZGVyLnBheW1lbnRzXCJcclxuICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwib3JkZXIuY3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgIFtwYXltZW50XT1cInBheW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgKHNldHRsZVBheW1lbnQpPVwic2V0dGxlUGF5bWVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICh0cmFuc2l0aW9uUGF5bWVudFN0YXRlKT1cInRyYW5zaXRpb25QYXltZW50U3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoc2V0dGxlUmVmdW5kKT1cInNldHRsZVJlZnVuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLW9yZGVyLXBheW1lbnQtY2FyZD5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCAqbmdJZj1cIm9yZGVyLmZ1bGZpbGxtZW50cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx2ZHItZnVsZmlsbG1lbnQtY2FyZFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZ1bGZpbGxtZW50IG9mIG9yZGVyLmZ1bGZpbGxtZW50c1wiXHJcbiAgICAgICAgICAgICAgICBbZnVsZmlsbG1lbnRdPVwiZnVsZmlsbG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICh0cmFuc2l0aW9uU3RhdGUpPVwidHJhbnNpdGlvbkZ1bGZpbGxtZW50KGZ1bGZpbGxtZW50LmlkLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLWZ1bGZpbGxtZW50LWNhcmQ+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItcGFnZS1lbnRpdHktaW5mbyAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBlbnRpdHlcIiBbZW50aXR5XT1cImVudGl0eVwiIC8+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgIDwvdmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcblxyXG4gICAgPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgICAgIDx2ZHItc2VsbGVyLW9yZGVycy1jYXJkXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwib3JkZXIuc2VsbGVyT3JkZXJzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgIFtvcmRlcklkXT1cIm9yZGVyLmlkXCJcclxuICAgICAgICA+PC92ZHItc2VsbGVyLW9yZGVycy1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbcGFkZGluZ1hdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHZkci1vcmRlci10YWJsZVxyXG4gICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIFtvcmRlckxpbmVDdXN0b21GaWVsZHNdPVwib3JkZXJMaW5lQ3VzdG9tRmllbGRzXCJcclxuICAgICAgICAgICAgPjwvdmRyLW9yZGVyLXRhYmxlPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIudGF4LXN1bW1hcnknIHwgdHJhbnNsYXRlXCIgW3BhZGRpbmdYXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJ2NvbW1vbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJ29yZGVyLnRheC1yYXRlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAnb3JkZXIudGF4LWJhc2UnIHwgdHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICdvcmRlci50YXgtdG90YWwnIHwgdHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBvcmRlci50YXhTdW1tYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyByb3cuZGVzY3JpcHRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LnRheFJhdGUgLyAxMDAgfCBwZXJjZW50IH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHJvdy50YXhCYXNlIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LnRheFRvdGFsIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx2ZHItdGFiYmVkLWN1c3RvbS1maWVsZHNcclxuICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJPcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKVwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISgnVXBkYXRlT3JkZXInIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDdXN0b21GaWVsZHMoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpPy5wcmlzdGluZSB8fCBkZXRhaWxGb3JtLmdldCgnY3VzdG9tRmllbGRzJyk/LmludmFsaWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24udXBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkPVwib3JkZXItZGV0YWlsXCJcclxuICAgICAgICAgICAgW2VudGl0eSRdPVwiZW50aXR5JFwiXHJcbiAgICAgICAgICAgIFtkZXRhaWxGb3JtXT1cImRldGFpbEZvcm1cIlxyXG4gICAgICAgID48L3Zkci1jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0PlxyXG5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5vcmRlci1oaXN0b3J5JyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLW9yZGVyLWhpc3RvcnlcclxuICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbaGlzdG9yeV09XCJoaXN0b3J5JCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIChhZGROb3RlKT1cImFkZE5vdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAodXBkYXRlTm90ZSk9XCJ1cGRhdGVOb3RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGRlbGV0ZU5vdGUpPVwiZGVsZXRlTm90ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLW9yZGVyLWhpc3Rvcnk+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgIDwvdmRyLXBhZ2UtYmxvY2s+XHJcbjwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuIl19
|
|
552
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvb3JkZXIvc3JjL2NvbXBvbmVudHMvb3JkZXItZGV0YWlsL29yZGVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWRldGFpbC9vcmRlci1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCx1QkFBdUIsRUFNdkIscUJBQXFCLEVBSXJCLFNBQVMsRUFFVCx3QkFBd0IsR0FDM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZ0NBQWdD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QU0sQ0FBQyxDQUFDO1NBQ25HO0lBQ0wsQ0FBQzs4R0Eza0JRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtFQ2pEakMsOHFVQW9OQTs7MkZEbkthLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIEVkaXROb3RlRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgRnVsZmlsbG1lbnRGcmFnbWVudCxcclxuICAgIEdldE9yZGVySGlzdG9yeVF1ZXJ5LFxyXG4gICAgR2V0T3JkZXJRdWVyeSxcclxuICAgIE1vZGFsU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBPUkRFUl9ERVRBSUxfRlJBR01FTlQsXHJcbiAgICBPcmRlckRldGFpbEZyYWdtZW50LFxyXG4gICAgT3JkZXJEZXRhaWxRdWVyeURvY3VtZW50LFxyXG4gICAgUmVmdW5kLFxyXG4gICAgU29ydE9yZGVyLFxyXG4gICAgVGltZWxpbmVIaXN0b3J5RW50cnksXHJcbiAgICBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyLCBzdW1tYXRlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIG1hcFRvLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE9yZGVyVHJhbnNpdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvb3JkZXItdHJhbnNpdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkTWFudWFsUGF5bWVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1tYW51YWwtcGF5bWVudC1kaWFsb2cvYWRkLW1hbnVhbC1wYXltZW50LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYW5jZWxPcmRlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhbmNlbC1vcmRlci1kaWFsb2cvY2FuY2VsLW9yZGVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdWxmaWxsT3JkZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9mdWxmaWxsLW9yZGVyLWRpYWxvZy9mdWxmaWxsLW9yZGVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcmRlclByb2Nlc3NHcmFwaERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL29yZGVyLXByb2Nlc3MtZ3JhcGgtZGlhbG9nL29yZGVyLXByb2Nlc3MtZ3JhcGgtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlZnVuZE9yZGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmdW5kLW9yZGVyLWRpYWxvZy9yZWZ1bmQtb3JkZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNldHRsZVJlZnVuZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NldHRsZS1yZWZ1bmQtZGlhbG9nL3NldHRsZS1yZWZ1bmQtZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG50eXBlIFBheW1lbnQgPSBOb25OdWxsYWJsZTxPcmRlckRldGFpbEZyYWdtZW50WydwYXltZW50cyddPltudW1iZXJdO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9SREVSX0RFVEFJTF9RVUVSWSA9IGdxbGBcclxuICAgIHF1ZXJ5IE9yZGVyRGV0YWlsUXVlcnkoJGlkOiBJRCEpIHtcclxuICAgICAgICBvcmRlcihpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIC4uLk9yZGVyRGV0YWlsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtPUkRFUl9ERVRBSUxfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLW9yZGVyLWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vb3JkZXItZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL29yZGVyLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckRldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8dHlwZW9mIE9yZGVyRGV0YWlsUXVlcnlEb2N1bWVudCwgJ29yZGVyJz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICAgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnT3JkZXInKTtcclxuICAgIG9yZGVyTGluZUN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ09yZGVyTGluZScpO1xyXG4gICAgZGV0YWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5ncm91cChcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMucmVkdWNlKChoYXNoLCBmaWVsZCkgPT4gKHsgLi4uaGFzaCwgW2ZpZWxkLm5hbWVdOiAnJyB9KSwge30pLFxyXG4gICAgICAgICksXHJcbiAgICB9KTtcclxuICAgIGhpc3RvcnkkOiBPYnNlcnZhYmxlPE5vbk51bGxhYmxlPEdldE9yZGVySGlzdG9yeVF1ZXJ5WydvcmRlciddPlsnaGlzdG9yeSddWydpdGVtcyddIHwgdW5kZWZpbmVkPjtcclxuICAgIG5leHRTdGF0ZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcclxuICAgIGZldGNoSGlzdG9yeSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTdGF0ZXMgPSBbXHJcbiAgICAgICAgJ0FkZGluZ0l0ZW1zJyxcclxuICAgICAgICAnQXJyYW5naW5nUGF5bWVudCcsXHJcbiAgICAgICAgJ1BheW1lbnRBdXRob3JpemVkJyxcclxuICAgICAgICAnUGF5bWVudFNldHRsZWQnLFxyXG4gICAgICAgICdQYXJ0aWFsbHlTaGlwcGVkJyxcclxuICAgICAgICAnU2hpcHBlZCcsXHJcbiAgICAgICAgJ1BhcnRpYWxseURlbGl2ZXJlZCcsXHJcbiAgICAgICAgJ0RlbGl2ZXJlZCcsXHJcbiAgICAgICAgJ0NhbmNlbGxlZCcsXHJcbiAgICAgICAgJ01vZGlmeWluZycsXHJcbiAgICAgICAgJ0FycmFuZ2luZ0FkZGl0aW9uYWxQYXltZW50JyxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG9yZGVyVHJhbnNpdGlvblNlcnZpY2U6IE9yZGVyVHJhbnNpdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuZW50aXR5JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShvcmRlciA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvcmRlci5zdGF0ZSA9PT0gJ01vZGlmeWluZycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nLCAnbW9kaWZ5J10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSQgPSB0aGlzLmZldGNoSGlzdG9yeS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlclxyXG4gICAgICAgICAgICAgICAgICAgIC5nZXRPcmRlckhpc3RvcnkodGhpcy5pZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbShkYXRhID0+IGRhdGEub3JkZXI/Lmhpc3RvcnkuaXRlbXMpLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5uZXh0U3RhdGVzJCA9IHRoaXMuZW50aXR5JC5waXBlKFxyXG4gICAgICAgICAgICBtYXAob3JkZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNJbkN1c3RvbVN0YXRlID0gIXRoaXMuZGVmYXVsdFN0YXRlcy5pbmNsdWRlcyhvcmRlci5zdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNJbkN1c3RvbVN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBvcmRlci5uZXh0U3RhdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBvcmRlci5uZXh0U3RhdGVzLmZpbHRlcihzID0+ICF0aGlzLmRlZmF1bHRTdGF0ZXMuaW5jbHVkZXMocykpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TdGF0ZURpYWdyYW0oKSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChvcmRlciA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmZyb21Db21wb25lbnQoT3JkZXJQcm9jZXNzR3JhcGhEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlU3RhdGU6IG9yZGVyLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNpdGlvblRvU3RhdGUoc3RhdGU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIudHJhbnNpdGlvblRvU3RhdGUodGhpcy5pZCwgc3RhdGUpLnN1YnNjcmliZSgoeyB0cmFuc2l0aW9uT3JkZXJUb1N0YXRlIH0pID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh0cmFuc2l0aW9uT3JkZXJUb1N0YXRlPy5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdPcmRlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIudHJhbnNpdGlvbmVkLXRvLXN0YXRlLXN1Y2Nlc3MnKSwgeyBzdGF0ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdPcmRlclN0YXRlVHJhbnNpdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodHJhbnNpdGlvbk9yZGVyVG9TdGF0ZS50cmFuc2l0aW9uRXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFudWFsbHlUcmFuc2l0aW9uVG9TdGF0ZShvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIHRoaXMub3JkZXJUcmFuc2l0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAubWFudWFsbHlUcmFuc2l0aW9uVG9TdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcclxuICAgICAgICAgICAgICAgIG5leHRTdGF0ZXM6IG9yZGVyLm5leHRTdGF0ZXMsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxsYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF8oJ29yZGVyLm1hbnVhbGx5LXRyYW5zaXRpb24tdG8tc3RhdGUtbWVzc2FnZScpLFxyXG4gICAgICAgICAgICAgICAgcmV0cnk6IDAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2l0aW9uVG9Nb2RpZnlpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlclxyXG4gICAgICAgICAgICAudHJhbnNpdGlvblRvU3RhdGUodGhpcy5pZCwgJ01vZGlmeWluZycpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgdHJhbnNpdGlvbk9yZGVyVG9TdGF0ZSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRyYW5zaXRpb25PcmRlclRvU3RhdGU/Ll9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdPcmRlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi9tb2RpZnknXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdPcmRlclN0YXRlVHJhbnNpdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRyYW5zaXRpb25PcmRlclRvU3RhdGUudHJhbnNpdGlvbkVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3VzdG9tRmllbGRzKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgLnVwZGF0ZU9yZGVyQ3VzdG9tRmllbGRzKHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLmRldGFpbEZvcm0udmFsdWUuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwgeyBlbnRpdHk6ICdPcmRlcicgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9yZGVyQWRkcmVzc0xpbmVzKG9yZGVyQWRkcmVzcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgaWYgKCFvcmRlckFkZHJlc3MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhvcmRlckFkZHJlc3MpXHJcbiAgICAgICAgICAgIC5maWx0ZXIodmFsID0+IHZhbCAhPT0gJ09yZGVyQWRkcmVzcycpXHJcbiAgICAgICAgICAgIC5maWx0ZXIobGluZSA9PiAhIWxpbmUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHRsZVBheW1lbnQocGF5bWVudDogUGF5bWVudCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuc2V0dGxlUGF5bWVudChwYXltZW50LmlkKS5zdWJzY3JpYmUoKHsgc2V0dGxlUGF5bWVudCB9KSA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoc2V0dGxlUGF5bWVudC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50JzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGxlUGF5bWVudC5zdGF0ZSA9PT0gJ1NldHRsZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLnNldHRsZS1wYXltZW50LXN1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ29yZGVyLnNldHRsZS1wYXltZW50LWVycm9yJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmdldE9yZGVyKHRoaXMuaWQpLnNpbmdsZSQuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnT3JkZXJTdGF0ZVRyYW5zaXRpb25FcnJvcic6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50U3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnU2V0dGxlUGF5bWVudEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3Ioc2V0dGxlUGF5bWVudC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zaXRpb25QYXltZW50U3RhdGUoeyBwYXltZW50LCBzdGF0ZSB9OiB7IHBheW1lbnQ6IFBheW1lbnQ7IHN0YXRlOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIGlmIChzdGF0ZSA9PT0gJ0NhbmNlbGxlZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlci5jYW5jZWxQYXltZW50KHBheW1lbnQuaWQpLnN1YnNjcmliZSgoeyBjYW5jZWxQYXltZW50IH0pID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoY2FuY2VsUGF5bWVudC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUGF5bWVudCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLnRyYW5zaXRpb25lZC1wYXltZW50LXRvLXN0YXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmdldE9yZGVyKHRoaXMuaWQpLnNpbmdsZSQuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUGF5bWVudFN0YXRlVHJhbnNpdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGNhbmNlbFBheW1lbnQudHJhbnNpdGlvbkVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ2FuY2VsUGF5bWVudEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGNhbmNlbFBheW1lbnQucGF5bWVudEVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXHJcbiAgICAgICAgICAgICAgICAudHJhbnNpdGlvblBheW1lbnRUb1N0YXRlKHBheW1lbnQuaWQsIHN0YXRlKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoeyB0cmFuc2l0aW9uUGF5bWVudFRvU3RhdGUgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNpdGlvblBheW1lbnRUb1N0YXRlLl9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUGF5bWVudCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCdvcmRlci50cmFuc2l0aW9uZWQtcGF5bWVudC10by1zdGF0ZS1zdWNjZXNzJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuZ2V0T3JkZXIodGhpcy5pZCkuc2luZ2xlJC5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50U3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRyYW5zaXRpb25QYXltZW50VG9TdGF0ZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjYW5BZGRGdWxmaWxsbWVudChvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGFsbEZ1bGZpbGxtZW50TGluZXM6IEZ1bGZpbGxtZW50RnJhZ21lbnRbJ2xpbmVzJ10gPSAob3JkZXIuZnVsZmlsbG1lbnRzID8/IFtdKS5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhbGwsIGZ1bGZpbGxtZW50KSA9PiBbLi4uYWxsLCAuLi5mdWxmaWxsbWVudC5saW5lc10sXHJcbiAgICAgICAgICAgIFtdIGFzIEZ1bGZpbGxtZW50RnJhZ21lbnRbJ2xpbmVzJ10sXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgYWxsSXRlbXNGdWxmaWxsZWQgPSB0cnVlO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvcmRlci5saW5lcykge1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbEZ1bGZpbGxlZENvdW50ID0gYWxsRnVsZmlsbG1lbnRMaW5lc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihyb3cgPT4gcm93Lm9yZGVyTGluZUlkID09PSBsaW5lLmlkKVxyXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgoc3VtLCByb3cpID0+IHN1bSArIHJvdy5xdWFudGl0eSwgMCk7XHJcbiAgICAgICAgICAgIGlmICh0b3RhbEZ1bGZpbGxlZENvdW50IDwgbGluZS5xdWFudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgYWxsSXRlbXNGdWxmaWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhYWxsSXRlbXNGdWxmaWxsZWQgJiZcclxuICAgICAgICAgICAgIXRoaXMuaGFzVW5zZXR0bGVkTW9kaWZpY2F0aW9ucyhvcmRlcikgJiZcclxuICAgICAgICAgICAgdGhpcy5vdXRzdGFuZGluZ1BheW1lbnRBbW91bnQob3JkZXIpID09PSAwICYmXHJcbiAgICAgICAgICAgIChvcmRlci5uZXh0U3RhdGVzLmluY2x1ZGVzKCdTaGlwcGVkJykgfHxcclxuICAgICAgICAgICAgICAgIG9yZGVyLm5leHRTdGF0ZXMuaW5jbHVkZXMoJ1BhcnRpYWxseVNoaXBwZWQnKSB8fFxyXG4gICAgICAgICAgICAgICAgb3JkZXIubmV4dFN0YXRlcy5pbmNsdWRlcygnRGVsaXZlcmVkJykpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNVbnNldHRsZWRNb2RpZmljYXRpb25zKG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIDAgPCBvcmRlci5tb2RpZmljYXRpb25zLmZpbHRlcihtID0+ICFtLmlzU2V0dGxlZCkubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE91dHN0YW5kaW5nTW9kaWZpY2F0aW9uQW1vdW50KG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gc3VtbWF0ZShcclxuICAgICAgICAgICAgb3JkZXIubW9kaWZpY2F0aW9ucy5maWx0ZXIobSA9PiAhbS5pc1NldHRsZWQpLFxyXG4gICAgICAgICAgICAncHJpY2VDaGFuZ2UnLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb3V0c3RhbmRpbmdQYXltZW50QW1vdW50KG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBwYXltZW50SXNWYWxpZCA9IChwOiBQYXltZW50KTogYm9vbGVhbiA9PlxyXG4gICAgICAgICAgICBwLnN0YXRlICE9PSAnQ2FuY2VsbGVkJyAmJiBwLnN0YXRlICE9PSAnRGVjbGluZWQnICYmIHAuc3RhdGUgIT09ICdFcnJvcic7XHJcblxyXG4gICAgICAgIGxldCBhbW91bnRDb3ZlcmVkID0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IHBheW1lbnQgb2Ygb3JkZXIucGF5bWVudHM/LmZpbHRlcihwYXltZW50SXNWYWxpZCkgPz8gW10pIHtcclxuICAgICAgICAgICAgY29uc3QgcmVmdW5kcyA9IHBheW1lbnQucmVmdW5kcy5maWx0ZXIociA9PiByLnN0YXRlICE9PSAnRmFpbGVkJykgPz8gW107XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZnVuZHNUb3RhbCA9IHN1bW1hdGUocmVmdW5kcyBhcyBBcnJheTxSZXF1aXJlZDxSZWZ1bmQ+PiwgJ3RvdGFsJyk7XHJcbiAgICAgICAgICAgIGFtb3VudENvdmVyZWQgKz0gcGF5bWVudC5hbW91bnQgLSByZWZ1bmRzVG90YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvcmRlci50b3RhbFdpdGhUYXggLSBhbW91bnRDb3ZlcmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE1hbnVhbFBheW1lbnQob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpIHtcclxuICAgICAgICBjb25zdCBwcmlvclN0YXRlID0gb3JkZXIuc3RhdGU7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoQWRkTWFudWFsUGF5bWVudERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBvdXRzdGFuZGluZ0Ftb3VudDogdGhpcy5vdXRzdGFuZGluZ1BheW1lbnRBbW91bnQob3JkZXIpLFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogb3JkZXIuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmFkZE1hbnVhbFBheW1lbnRUb09yZGVyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVySWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbklkOiByZXN1bHQudHJhbnNhY3Rpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcmVzdWx0Lm1ldGhvZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXN1bHQubWV0YWRhdGEgfHwge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBhZGRNYW51YWxQYXltZW50VG9PcmRlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhZGRNYW51YWxQYXltZW50VG9PcmRlci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLmFkZC1wYXltZW50LXRvLW9yZGVyLXN1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpb3JTdGF0ZSA9PT0gJ0FycmFuZ2luZ0FkZGl0aW9uYWxQYXltZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9yZGVyVHJhbnNpdGlvblNlcnZpY2UudHJhbnNpdGlvblRvUHJlTW9kaWZ5aW5nU3RhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlci5uZXh0U3RhdGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZignUGF5bWVudFNldHRsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnTWFudWFsUGF5bWVudFN0YXRlRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGFkZE1hbnVhbFBheW1lbnRUb09yZGVyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hPcmRlcih7IHJlc3VsdCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVsZmlsbE9yZGVyKCkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5JFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAob3JkZXIgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5mcm9tQ29tcG9uZW50KEZ1bGZpbGxPcmRlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAneGwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChpbnB1dCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNyZWF0ZUZ1bGZpbGxtZW50KGlucHV0KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gdGhpcy5yZWZldGNoT3JkZXIocmVzdWx0KS5waXBlKG1hcFRvKHJlc3VsdCkpKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBhZGRGdWxmaWxsbWVudFRvT3JkZXIgfSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFkZEZ1bGZpbGxtZW50VG9PcmRlci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Z1bGZpbGxtZW50JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLmNyZWF0ZS1mdWxmaWxsbWVudC1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtcHR5T3JkZXJMaW5lU2VsZWN0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbnN1ZmZpY2llbnRTdG9ja09uSGFuZEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSXRlbXNBbHJlYWR5RnVsZmlsbGVkRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbnZhbGlkRnVsZmlsbG1lbnRIYW5kbGVyRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGFkZEZ1bGZpbGxtZW50VG9PcmRlci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdGdWxmaWxsbWVudFN0YXRlVHJhbnNpdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihhZGRGdWxmaWxsbWVudFRvT3JkZXIudHJhbnNpdGlvbkVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDcmVhdGVGdWxmaWxsbWVudEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihhZGRGdWxmaWxsbWVudFRvT3JkZXIuZnVsZmlsbG1lbnRIYW5kbGVyRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KGFkZEZ1bGZpbGxtZW50VG9PcmRlcikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihhZGRGdWxmaWxsbWVudFRvT3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNpdGlvbkZ1bGZpbGxtZW50KGlkOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXHJcbiAgICAgICAgICAgIC50cmFuc2l0aW9uRnVsZmlsbG1lbnRUb1N0YXRlKGlkLCBzdGF0ZSlcclxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlc3VsdCA9PiB0aGlzLnJlZmV0Y2hPcmRlcihyZXN1bHQpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdvcmRlci5zdWNjZXNzZnVsbHktdXBkYXRlZC1mdWxmaWxsbWVudCcpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsT3JSZWZ1bmQob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpIHtcclxuICAgICAgICBjb25zdCBpc1JlZnVuZGFibGUgPSB0aGlzLm9yZGVySGFzU2V0dGxlZFBheW1lbnRzKG9yZGVyKTtcclxuICAgICAgICBpZiAob3JkZXIuc3RhdGUgPT09ICdQYXltZW50QXV0aG9yaXplZCcgfHwgb3JkZXIuYWN0aXZlID09PSB0cnVlIHx8ICFpc1JlZnVuZGFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxPcmRlcihvcmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZ1bmRPcmRlcihvcmRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldHRsZVJlZnVuZChyZWZ1bmQ6IFBheW1lbnRbJ3JlZnVuZHMnXVtudW1iZXJdKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoU2V0dGxlUmVmdW5kRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiAnbWQnLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmdW5kLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodHJhbnNhY3Rpb25JZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuc2V0dGxlUmVmdW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHJlZnVuZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoTWFwKHJlc3VsdCA9PiB0aGlzLnJlZmV0Y2hPcmRlcihyZXN1bHQpKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIuc2V0dGxlLXJlZnVuZC1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROb3RlKGV2ZW50OiB7IG5vdGU6IHN0cmluZzsgaXNQdWJsaWM6IGJvb2xlYW4gfSkge1xyXG4gICAgICAgIGNvbnN0IHsgbm90ZSwgaXNQdWJsaWMgfSA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgLmFkZE5vdGVUb09yZGVyKHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgbm90ZSxcclxuICAgICAgICAgICAgICAgIGlzUHVibGljLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAocmVzdWx0ID0+IHRoaXMucmVmZXRjaE9yZGVyKHJlc3VsdCkpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVOb3RlKGVudHJ5OiBUaW1lbGluZUhpc3RvcnlFbnRyeSkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEVkaXROb3RlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlQcml2YWN5Q29udHJvbHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGVJc1ByaXZhdGU6ICFlbnRyeS5pc1B1YmxpYyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlci51cGRhdGVPcmRlck5vdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZUlkOiBlbnRyeS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHVibGljOiAhcmVzdWx0LmlzUHJpdmF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IHJlc3VsdC5ub3RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnTm90ZScsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlTm90ZShlbnRyeTogVGltZWxpbmVIaXN0b3J5RW50cnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmRpYWxvZyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXygnY29tbW9uLmNvbmZpcm0tZGVsZXRlLW5vdGUnKSxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGVudHJ5LmRhdGEubm90ZSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdzZWNvbmRhcnknLCBsYWJlbDogXygnY29tbW9uLmNhbmNlbCcpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcChyZXMgPT4gKHJlcyA/IHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuZGVsZXRlT3JkZXJOb3RlKGVudHJ5LmlkKSA6IEVNUFRZKSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnTm90ZScsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3JkZXJIYXNTZXR0bGVkUGF5bWVudHMob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISFvcmRlci5wYXltZW50cz8uZmluZChwID0+IHAuc3RhdGUgPT09ICdTZXR0bGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYW5jZWxPcmRlcihvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KENhbmNlbE9yZGVyRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiAneGwnLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChpbnB1dCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNhbmNlbE9yZGVyKGlucHV0KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gdGhpcy5yZWZldGNoT3JkZXIocmVzdWx0KSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ29yZGVyLmNhbmNlbGxlZC1vcmRlci1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlZnVuZE9yZGVyKG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoUmVmdW5kT3JkZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIHNpemU6ICd4bCcsXHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBvcmRlcixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGlucHV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNhbmNlbC5saW5lcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmNhbmNlbE9yZGVyKGlucHV0LmNhbmNlbCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5jYW5jZWxPcmRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmZXRjaE9yZGVyKHJlc3VsdCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdvcmRlci5jYW5jZWxsZWQtb3JkZXItc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ2FuY2VsQWN0aXZlT3JkZXJFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1F1YW50aXR5VG9vR3JlYXRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpcGxlT3JkZXJFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyU3RhdGVUcmFuc2l0aW9uRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFbXB0eU9yZGVyTGluZVNlbGVjdGlvbkVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbaW5wdXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGlucHV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQucmVmdW5kLmxpbmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZnVuZE9yZGVyKGlucHV0LnJlZnVuZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnJlZnVuZE9yZGVyKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt1bmRlZmluZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1JlZnVuZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hPcmRlcihyZXN1bHQpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0ZSA9PT0gJ0ZhaWxlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnb3JkZXIucmVmdW5kLW9yZGVyLWZhaWxlZCcpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnb3JkZXIucmVmdW5kLW9yZGVyLXN1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWxyZWFkeVJlZnVuZGVkRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOb3RoaW5nVG9SZWZ1bmRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnRPcmRlck1pc21hdGNoRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSZWZ1bmRPcmRlclN0YXRlRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSZWZ1bmRTdGF0ZVRyYW5zaXRpb25FcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlZmV0Y2hPcmRlcihyZXN1bHQ6IG9iamVjdCB8IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8R2V0T3JkZXJRdWVyeSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmdldE9yZGVyKHRoaXMuaWQpLnNpbmdsZSQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKGVudGl0eTogT3JkZXJEZXRhaWxGcmFnbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDdXN0b21GaWVsZEZvcm1WYWx1ZXModGhpcy5jdXN0b21GaWVsZHMsIHRoaXMuZGV0YWlsRm9ybS5nZXQoWydjdXN0b21GaWVsZHMnXSksIGVudGl0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjx2ZHItcGFnZS1ibG9jaz5cclxuICAgIDx2ZHItYWN0aW9uLWJhciAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBvcmRlclwiPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdD4gPC92ZHItYWItbGVmdD5cclxuXHJcbiAgICAgICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJvcmRlci1kZXRhaWxcIj48L3Zkci1hY3Rpb24tYmFyLWl0ZW1zPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5IG1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcmRlci50eXBlICE9PSAnQWdncmVnYXRlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChvcmRlci5zdGF0ZSA9PT0gJ0FycmFuZ2luZ1BheW1lbnQnIHx8IG9yZGVyLnN0YXRlID09PSAnQXJyYW5naW5nQWRkaXRpb25hbFBheW1lbnQnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoYXNVbnNldHRsZWRNb2RpZmljYXRpb25zKG9yZGVyKSB8fCAwIDwgb3V0c3RhbmRpbmdQYXltZW50QW1vdW50KG9yZGVyKSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTWFudWFsUGF5bWVudChvcmRlcilcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIuYWRkLXBheW1lbnQtdG8tb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAoe3sgb3V0c3RhbmRpbmdQYXltZW50QW1vdW50KG9yZGVyKSB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19KVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBtci0xXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIudHlwZSAhPT0gJ0FnZ3JlZ2F0ZScgJiZcclxuICAgICAgICAgICAgICAgICAgICBvcmRlci5hY3RpdmUgPT09IGZhbHNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXIuc3RhdGUgIT09ICdBcnJhbmdpbmdBZGRpdGlvbmFsUGF5bWVudCcgJiZcclxuICAgICAgICAgICAgICAgICAgICBvcmRlci5zdGF0ZSAhPT0gJ0FycmFuZ2luZ1BheW1lbnQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgMCA8IG91dHN0YW5kaW5nUGF5bWVudEFtb3VudChvcmRlcilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidHJhbnNpdGlvblRvU3RhdGUoJ0FycmFuZ2luZ0FkZGl0aW9uYWxQYXltZW50JylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIuYXJyYW5nZS1hZGRpdGlvbmFsLXBheW1lbnQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyLnR5cGUgIT09ICdBZ2dyZWdhdGUnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIHByaW1hcnkgbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZnVsZmlsbE9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRGdWxmaWxsbWVudChvcmRlcilcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIuZnVsZmlsbC1vcmRlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idXR0b25cIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWxsaXBzaXMtdmVydGljYWxcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3JkZXIudHlwZSAhPT0gJ0FnZ3JlZ2F0ZScgJiYgb3JkZXIubmV4dFN0YXRlcy5pbmNsdWRlcygnTW9kaWZ5aW5nJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmRyRHJvcGRvd25JdGVtIChjbGljayk9XCJ0cmFuc2l0aW9uVG9Nb2RpZnlpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGVuY2lsXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5tb2RpZnktb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyLnR5cGUgIT09ICdBZ2dyZWdhdGUnICYmIG9yZGVyLm5leHRTdGF0ZXMuaW5jbHVkZXMoJ0NhbmNlbGxlZCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbE9yUmVmdW5kKG9yZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJlcnJvci1zdGFuZGFyZFwiIGNsYXNzPVwiaXMtZXJyb3JcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3JkZXJIYXNTZXR0bGVkUGF5bWVudHMob3JkZXIpOyBlbHNlIGNhbmNlbE9ubHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5yZWZ1bmQtYW5kLWNhbmNlbC1vcmRlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FuY2VsT25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5jYW5jZWwtb3JkZXInIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIobmV4dFN0YXRlcyQgfCBhc3luYyk/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbmV4dFN0YXRlIG9mIG5leHRTdGF0ZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmFuc2l0aW9uVG9TdGF0ZShuZXh0U3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwic3RlcC1mb3J3YXJkLTJcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JkZXIudHJhbnNpdGlvbi10by1zdGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGUgOiB7IHN0YXRlOiAobmV4dFN0YXRlIHwgc3RhdGVJMThuVG9rZW4gfCB0cmFuc2xhdGUpIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmRyRHJvcGRvd25JdGVtIChjbGljayk9XCJtYW51YWxseVRyYW5zaXRpb25Ub1N0YXRlKG9yZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJzdGVwLWZvcndhcmQtMlwiIGNsYXNzPVwiaXMtd2FybmluZ1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5tYW51YWxseS10cmFuc2l0aW9uLXRvLXN0YXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XHJcbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG5cclxuPHZkci1wYWdlLWRldGFpbC1sYXlvdXQgKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgb3JkZXJcIj5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItb3JkZXItc3RhdGUtbGFiZWwgW3N0YXRlXT1cIm9yZGVyLnN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TdGF0ZURpYWdyYW0oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidvcmRlci5vcmRlci1zdGF0ZS1kaWFncmFtJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwibGlzdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC92ZHItb3JkZXItc3RhdGUtbGFiZWw+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5jdXN0b21lcicgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPHZkci1jdXN0b21lci1sYWJlbCBbY3VzdG9tZXJdPVwib3JkZXIuY3VzdG9tZXJcIj48L3Zkci1jdXN0b21lci1sYWJlbD5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGFcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ29yZGVyLnNoaXBwaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0T3JkZXJBZGRyZXNzTGluZXMob3JkZXIuc2hpcHBpbmdBZGRyZXNzKS5sZW5ndGhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWZvcm1hdHRlZC1hZGRyZXNzIFthZGRyZXNzXT1cIm9yZGVyLnNoaXBwaW5nQWRkcmVzc1wiIGNsYXNzPVwibXQtMVwiPjwvdmRyLWZvcm1hdHRlZC1hZGRyZXNzPlxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ29yZGVyLmJpbGxpbmctYWRkcmVzcycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRPcmRlckFkZHJlc3NMaW5lcyhvcmRlci5iaWxsaW5nQWRkcmVzcykubGVuZ3RoXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtYXR0ZWQtYWRkcmVzcyBbYWRkcmVzc109XCJvcmRlci5iaWxsaW5nQWRkcmVzc1wiIGNsYXNzPVwibXQtMVwiPjwvdmRyLWZvcm1hdHRlZC1hZGRyZXNzPlxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5wYXltZW50cycgfCB0cmFuc2xhdGVcIiAqbmdJZj1cIm9yZGVyLnBheW1lbnRzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPHZkci1vcmRlci1wYXltZW50LWNhcmRcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYXltZW50IG9mIG9yZGVyLnBheW1lbnRzXCJcclxuICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwib3JkZXIuY3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgIFtwYXltZW50XT1cInBheW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgKHNldHRsZVBheW1lbnQpPVwic2V0dGxlUGF5bWVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICh0cmFuc2l0aW9uUGF5bWVudFN0YXRlKT1cInRyYW5zaXRpb25QYXltZW50U3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoc2V0dGxlUmVmdW5kKT1cInNldHRsZVJlZnVuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLW9yZGVyLXBheW1lbnQtY2FyZD5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCAqbmdJZj1cIm9yZGVyLmZ1bGZpbGxtZW50cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx2ZHItZnVsZmlsbG1lbnQtY2FyZFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZ1bGZpbGxtZW50IG9mIG9yZGVyLmZ1bGZpbGxtZW50c1wiXHJcbiAgICAgICAgICAgICAgICBbZnVsZmlsbG1lbnRdPVwiZnVsZmlsbG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICh0cmFuc2l0aW9uU3RhdGUpPVwidHJhbnNpdGlvbkZ1bGZpbGxtZW50KGZ1bGZpbGxtZW50LmlkLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLWZ1bGZpbGxtZW50LWNhcmQ+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItcGFnZS1lbnRpdHktaW5mbyAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBlbnRpdHlcIiBbZW50aXR5XT1cImVudGl0eVwiIC8+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgIDwvdmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcblxyXG4gICAgPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgICAgIDx2ZHItc2VsbGVyLW9yZGVycy1jYXJkXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwib3JkZXIuc2VsbGVyT3JkZXJzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgIFtvcmRlcklkXT1cIm9yZGVyLmlkXCJcclxuICAgICAgICA+PC92ZHItc2VsbGVyLW9yZGVycy1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbcGFkZGluZ1hdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHZkci1vcmRlci10YWJsZVxyXG4gICAgICAgICAgICAgICAgW29yZGVyXT1cIm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIFtvcmRlckxpbmVDdXN0b21GaWVsZHNdPVwib3JkZXJMaW5lQ3VzdG9tRmllbGRzXCJcclxuICAgICAgICAgICAgPjwvdmRyLW9yZGVyLXRhYmxlPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIudGF4LXN1bW1hcnknIHwgdHJhbnNsYXRlXCIgW3BhZGRpbmdYXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJ2NvbW1vbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJ29yZGVyLnRheC1yYXRlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAnb3JkZXIudGF4LWJhc2UnIHwgdHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICdvcmRlci50YXgtdG90YWwnIHwgdHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBvcmRlci50YXhTdW1tYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyByb3cuZGVzY3JpcHRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LnRheFJhdGUgLyAxMDAgfCBwZXJjZW50IH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHJvdy50YXhCYXNlIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LnRheFRvdGFsIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx2ZHItdGFiYmVkLWN1c3RvbS1maWVsZHNcclxuICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJPcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKVwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISgnVXBkYXRlT3JkZXInIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDdXN0b21GaWVsZHMoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpPy5wcmlzdGluZSB8fCBkZXRhaWxGb3JtLmdldCgnY3VzdG9tRmllbGRzJyk/LmludmFsaWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24udXBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkPVwib3JkZXItZGV0YWlsXCJcclxuICAgICAgICAgICAgW2VudGl0eSRdPVwiZW50aXR5JFwiXHJcbiAgICAgICAgICAgIFtkZXRhaWxGb3JtXT1cImRldGFpbEZvcm1cIlxyXG4gICAgICAgID48L3Zkci1jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0PlxyXG5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5vcmRlci1oaXN0b3J5JyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLW9yZGVyLWhpc3RvcnlcclxuICAgICAgICAgICAgICAgIFtvcmRlcl09XCJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbaGlzdG9yeV09XCJoaXN0b3J5JCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIChhZGROb3RlKT1cImFkZE5vdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAodXBkYXRlTm90ZSk9XCJ1cGRhdGVOb3RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGRlbGV0ZU5vdGUpPVwiZGVsZXRlTm90ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLW9yZGVyLWhpc3Rvcnk+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgIDwvdmRyLXBhZ2UtYmxvY2s+XHJcbjwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuIl19
|
package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs
CHANGED
|
@@ -50,10 +50,10 @@ export class SelectCustomerDialogComponent {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: SelectCustomerDialogComponent, deps: [{ token: i1.DataService }, { token: i2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: SelectCustomerDialogComponent, selector: "vdr-select-customer-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <ng-select\r\n
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: SelectCustomerDialogComponent, selector: "vdr-select-customer-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <div class=\"mt-4\">\r\n <ng-select\r\n [items]=\"customers$ | async\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"2\"\r\n [loading]=\"isLoading\"\r\n [typeahead]=\"input$\"\r\n [(ngModel)]=\"selectedCustomer\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"ml2 mr2\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"ml2 mr2\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'customer.create-new-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"createNew\">\r\n <clr-tab-content>\r\n <form [formGroup]=\"customerForm\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.first-name' | translate\" for=\"firstName\">\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.last-name' | translate\" for=\"lastName\">\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.email-address' | translate\" for=\"emailAddress\">\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.phone-number' | translate\" for=\"phoneNumber\">\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n </form>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n</clr-tabs>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"(useExisting && selectedCustomer.length === 0) || (createNew && customerForm.invalid)\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrIfActive, selector: "[clrIfActive]", inputs: ["clrIfActive"], outputs: ["clrIfActiveChange"] }, { kind: "component", type: i3.ClrTabContent, selector: "clr-tab-content", inputs: ["id"] }, { kind: "component", type: i3.ClrTab, selector: "clr-tab" }, { kind: "component", type: i3.ClrTabs, selector: "clr-tabs", inputs: ["clrLayout"] }, { kind: "directive", type: i3.ClrTabLink, selector: "[clrTabLink]", inputs: ["clrTabLinkInOverflow", "id"] }, { kind: "directive", type: i3.ÇlrTabsWillyWonka, selector: "clr-tabs" }, { kind: "directive", type: i3.ÇlrActiveOompaLoompa, selector: "[clrTabLink], clr-tab-content" }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "directive", type: i1.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i1.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
54
54
|
}
|
|
55
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: SelectCustomerDialogComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
|
-
args: [{ selector: 'vdr-select-customer-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <ng-select\r\n
|
|
57
|
+
args: [{ selector: 'vdr-select-customer-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <div class=\"mt-4\">\r\n <ng-select\r\n [items]=\"customers$ | async\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"2\"\r\n [loading]=\"isLoading\"\r\n [typeahead]=\"input$\"\r\n [(ngModel)]=\"selectedCustomer\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"ml2 mr2\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"ml2 mr2\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'customer.create-new-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"createNew\">\r\n <clr-tab-content>\r\n <form [formGroup]=\"customerForm\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.first-name' | translate\" for=\"firstName\">\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.last-name' | translate\" for=\"lastName\">\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.email-address' | translate\" for=\"emailAddress\">\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.phone-number' | translate\" for=\"phoneNumber\">\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n </form>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n</clr-tabs>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"(useExisting && selectedCustomer.length === 0) || (createNew && customerForm.invalid)\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n" }]
|
|
58
58
|
}], ctorParameters: function () { return [{ type: i1.DataService }, { type: i2.UntypedFormBuilder }]; } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL3NlbGVjdC1jdXN0b21lci1kaWFsb2cvc2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL3NlbGVjdC1jdXN0b21lci1kaWFsb2cvc2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFVaEcsTUFBTSxPQUFPLDZCQUE2QjtJQVV0QyxZQUFvQixXQUF3QixFQUFVLFdBQStCO1FBQWpFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBTnJGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IscUJBQWdCLEdBQWUsRUFBRSxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDcEMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkMsV0FBVyxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUNwQixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNaLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDYixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDcEIsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO2FBQzVCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDN0MsSUFBSSxDQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxzQkFBc0I7UUFDaEQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUN0QyxDQUNSLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDOzhHQXhEUSw2QkFBNkI7a0dBQTdCLDZCQUE2QixrRUNkMUMsK3BIQTBFQTs7MkZENURhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDcmVhdGVDdXN0b21lcklucHV0LCBEYXRhU2VydmljZSwgRGlhbG9nLCBHZXRDdXN0b21lckxpc3RRdWVyeSB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBjb25jYXQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ3VzdG9tZXIgPSBHZXRDdXN0b21lckxpc3RRdWVyeVsnY3VzdG9tZXJzJ11bJ2l0ZW1zJ11bbnVtYmVyXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItc2VsZWN0LWN1c3RvbWVyLWRpYWxvZycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtY3VzdG9tZXItZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdEN1c3RvbWVyRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEaWFsb2c8Q3VzdG9tZXIgfCBDcmVhdGVDdXN0b21lcklucHV0PiB7XHJcbiAgICByZXNvbHZlV2l0aDogKHJlc3VsdD86IEN1c3RvbWVyIHwgQ3JlYXRlQ3VzdG9tZXJJbnB1dCkgPT4gdm9pZDtcclxuICAgIGN1c3RvbWVyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIGN1c3RvbWVycyQ6IE9ic2VydmFibGU8Q3VzdG9tZXJbXT47XHJcbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIGlucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHNlbGVjdGVkQ3VzdG9tZXI6IEN1c3RvbWVyW10gPSBbXTtcclxuICAgIHVzZUV4aXN0aW5nID0gdHJ1ZTtcclxuICAgIGNyZWF0ZU5ldyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHtcclxuICAgICAgICB0aGlzLmN1c3RvbWVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiAnJyxcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXN0b21lcnMkID0gY29uY2F0KFxyXG4gICAgICAgICAgICBvZihbXSksIC8vIGRlZmF1bHQgaXRlbXNcclxuICAgICAgICAgICAgdGhpcy5pbnB1dCQucGlwZShcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSB0cnVlKSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodGVybSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEN1c3RvbWVyTGlzdCgxMCwgMCwgdGVybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbSgoeyBjdXN0b21lcnMgfSkgPT4gY3VzdG9tZXJzLml0ZW1zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgLy8gZW1wdHkgbGlzdCBvbiBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeUZuKGl0ZW06IEN1c3RvbWVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCkge1xyXG4gICAgICAgIHRoaXMucmVzb2x2ZVdpdGgoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlRXhpc3RpbmcgJiYgdGhpcy5zZWxlY3RlZEN1c3RvbWVyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc29sdmVXaXRoKHRoaXMuc2VsZWN0ZWRDdXN0b21lclswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZU5ldyAmJiB0aGlzLmN1c3RvbWVyRm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmN1c3RvbWVyRm9ybS52YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlV2l0aChmb3JtVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgdmRyRGlhbG9nVGl0bGU+e3sgJ29yZGVyLnNldC1jdXN0b21lci1mb3Itb3JkZXInIHwgdHJhbnNsYXRlIH19PC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxjbHItdGFicz5cclxuICAgIDxjbHItdGFiPlxyXG4gICAgICAgIDxidXR0b24gY2xyVGFiTGluaz57eyAnb3JkZXIuZXhpc3RpbmctY3VzdG9tZXInIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbKGNscklmQWN0aXZlKV09XCJ1c2VFeGlzdGluZ1wiPlxyXG4gICAgICAgICAgICA8Y2xyLXRhYi1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPG5nLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjdXN0b21lcnMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FkZFRhZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlU2VsZWN0ZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RyYWNrQnlGbl09XCJ0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFttaW5UZXJtTGVuZ3RoXT1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJpbnB1dCRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDdXN0b21lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmctbGFiZWwtdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1jbGVhcj1cImNsZWFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInVzZXJcIiBjbGFzcz1cImlzLXNvbGlkXCI+PC9jbHItaWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJtbDIgbXIyXCI+e3sgaXRlbS5maXJzdE5hbWUgfX0ge3sgaXRlbS5sYXN0TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1jaGlwPnt7IGl0ZW0uZW1haWxBZGRyZXNzIH19PC92ZHItY2hpcD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ1c2VyXCIgY2xhc3M9XCJpcy1zb2xpZFwiPjwvY2xyLWljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWwyIG1yMlwiPnt7IGl0ZW0uZmlyc3ROYW1lIH19IHt7IGl0ZW0ubGFzdE5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcD57eyBpdGVtLmVtYWlsQWRkcmVzcyB9fTwvdmRyLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Nsci10YWItY29udGVudD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jbHItdGFiPlxyXG4gICAgPGNsci10YWI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbHJUYWJMaW5rPnt7ICdjdXN0b21lci5jcmVhdGUtbmV3LWN1c3RvbWVyJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgWyhjbHJJZkFjdGl2ZSldPVwiY3JlYXRlTmV3XCI+XHJcbiAgICAgICAgICAgIDxjbHItdGFiLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImN1c3RvbWVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY3VzdG9tZXIudGl0bGUnIHwgdHJhbnNsYXRlXCIgZm9yPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ0aXRsZVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2N1c3RvbWVyLmZpcnN0LW5hbWUnIHwgdHJhbnNsYXRlXCIgZm9yPVwiZmlyc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZmlyc3ROYW1lXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2N1c3RvbWVyLmxhc3QtbmFtZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJsYXN0TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImxhc3ROYW1lXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY3VzdG9tZXIuZW1haWwtYWRkcmVzcycgfCB0cmFuc2xhdGVcIiBmb3I9XCJlbWFpbEFkZHJlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbWFpbEFkZHJlc3NcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsQWRkcmVzc1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY3VzdG9tZXIucGhvbmUtbnVtYmVyJyB8IHRyYW5zbGF0ZVwiIGZvcj1cInBob25lTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGhvbmVOdW1iZXJcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvY2xyLXRhYi1jb250ZW50PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Nsci10YWI+XHJcbjwvY2xyLXRhYnM+XHJcblxyXG48bmctdGVtcGxhdGUgdmRyRGlhbG9nQnV0dG9ucz5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+e3sgJ2NvbW1vbi5jYW5jZWwnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdCgpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiKHVzZUV4aXN0aW5nICYmIHNlbGVjdGVkQ3VzdG9tZXIubGVuZ3RoID09PSAwKSB8fCAoY3JlYXRlTmV3ICYmIGN1c3RvbWVyRm9ybS5pbnZhbGlkKVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgPlxyXG4gICAgICAgIHt7ICdjb21tb24ub2theScgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL3NlbGVjdC1jdXN0b21lci1kaWFsb2cvc2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL3NlbGVjdC1jdXN0b21lci1kaWFsb2cvc2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFVaEcsTUFBTSxPQUFPLDZCQUE2QjtJQVV0QyxZQUFvQixXQUF3QixFQUFVLFdBQStCO1FBQWpFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBTnJGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IscUJBQWdCLEdBQWUsRUFBRSxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDcEMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkMsV0FBVyxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUNwQixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNaLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDYixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDcEIsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO2FBQzVCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDN0MsSUFBSSxDQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxzQkFBc0I7UUFDaEQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUN0QyxDQUNSLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDOzhHQXhEUSw2QkFBNkI7a0dBQTdCLDZCQUE2QixrRUNkMUMsdTFIQTJFQTs7MkZEN0RhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDcmVhdGVDdXN0b21lcklucHV0LCBEYXRhU2VydmljZSwgRGlhbG9nLCBHZXRDdXN0b21lckxpc3RRdWVyeSB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBjb25jYXQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ3VzdG9tZXIgPSBHZXRDdXN0b21lckxpc3RRdWVyeVsnY3VzdG9tZXJzJ11bJ2l0ZW1zJ11bbnVtYmVyXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItc2VsZWN0LWN1c3RvbWVyLWRpYWxvZycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWN1c3RvbWVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtY3VzdG9tZXItZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdEN1c3RvbWVyRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEaWFsb2c8Q3VzdG9tZXIgfCBDcmVhdGVDdXN0b21lcklucHV0PiB7XHJcbiAgICByZXNvbHZlV2l0aDogKHJlc3VsdD86IEN1c3RvbWVyIHwgQ3JlYXRlQ3VzdG9tZXJJbnB1dCkgPT4gdm9pZDtcclxuICAgIGN1c3RvbWVyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIGN1c3RvbWVycyQ6IE9ic2VydmFibGU8Q3VzdG9tZXJbXT47XHJcbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIGlucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHNlbGVjdGVkQ3VzdG9tZXI6IEN1c3RvbWVyW10gPSBbXTtcclxuICAgIHVzZUV4aXN0aW5nID0gdHJ1ZTtcclxuICAgIGNyZWF0ZU5ldyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHtcclxuICAgICAgICB0aGlzLmN1c3RvbWVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiAnJyxcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXN0b21lcnMkID0gY29uY2F0KFxyXG4gICAgICAgICAgICBvZihbXSksIC8vIGRlZmF1bHQgaXRlbXNcclxuICAgICAgICAgICAgdGhpcy5pbnB1dCQucGlwZShcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSB0cnVlKSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodGVybSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEN1c3RvbWVyTGlzdCgxMCwgMCwgdGVybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbSgoeyBjdXN0b21lcnMgfSkgPT4gY3VzdG9tZXJzLml0ZW1zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgLy8gZW1wdHkgbGlzdCBvbiBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeUZuKGl0ZW06IEN1c3RvbWVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCkge1xyXG4gICAgICAgIHRoaXMucmVzb2x2ZVdpdGgoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlRXhpc3RpbmcgJiYgdGhpcy5zZWxlY3RlZEN1c3RvbWVyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc29sdmVXaXRoKHRoaXMuc2VsZWN0ZWRDdXN0b21lclswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZU5ldyAmJiB0aGlzLmN1c3RvbWVyRm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmN1c3RvbWVyRm9ybS52YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNvbHZlV2l0aChmb3JtVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgdmRyRGlhbG9nVGl0bGU+e3sgJ29yZGVyLnNldC1jdXN0b21lci1mb3Itb3JkZXInIHwgdHJhbnNsYXRlIH19PC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxjbHItdGFicz5cclxuICAgIDxjbHItdGFiPlxyXG4gICAgICAgIDxidXR0b24gY2xyVGFiTGluaz57eyAnb3JkZXIuZXhpc3RpbmctY3VzdG9tZXInIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbKGNscklmQWN0aXZlKV09XCJ1c2VFeGlzdGluZ1wiPlxyXG4gICAgICAgICAgICA8Y2xyLXRhYi1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjdXN0b21lcnMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FkZFRhZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrQnlGbl09XCJ0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluVGVybUxlbmd0aF09XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJpbnB1dCRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ3VzdG9tZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidXNlclwiIGNsYXNzPVwiaXMtc29saWRcIj48L2Nsci1pY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJtbDIgbXIyXCI+e3sgaXRlbS5maXJzdE5hbWUgfX0ge3sgaXRlbS5sYXN0TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcD57eyBpdGVtLmVtYWlsQWRkcmVzcyB9fTwvdmRyLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidXNlclwiIGNsYXNzPVwiaXMtc29saWRcIj48L2Nsci1pY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJtbDIgbXIyXCI+e3sgaXRlbS5maXJzdE5hbWUgfX0ge3sgaXRlbS5sYXN0TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcD57eyBpdGVtLmVtYWlsQWRkcmVzcyB9fTwvdmRyLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9jbHItdGFiLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvY2xyLXRhYj5cclxuICAgIDxjbHItdGFiPlxyXG4gICAgICAgIDxidXR0b24gY2xyVGFiTGluaz57eyAnY3VzdG9tZXIuY3JlYXRlLW5ldy1jdXN0b21lcicgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFsoY2xySWZBY3RpdmUpXT1cImNyZWF0ZU5ld1wiPlxyXG4gICAgICAgICAgICA8Y2xyLXRhYi1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjdXN0b21lckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjdXN0b21lci50aXRsZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ0aXRsZVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY3VzdG9tZXIuZmlyc3QtbmFtZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJmaXJzdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZmlyc3ROYW1lXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY3VzdG9tZXIubGFzdC1uYW1lJyB8IHRyYW5zbGF0ZVwiIGZvcj1cImxhc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImxhc3ROYW1lXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjdXN0b21lci5lbWFpbC1hZGRyZXNzJyB8IHRyYW5zbGF0ZVwiIGZvcj1cImVtYWlsQWRkcmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbWFpbEFkZHJlc3NcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsQWRkcmVzc1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjdXN0b21lci5waG9uZS1udW1iZXInIHwgdHJhbnNsYXRlXCIgZm9yPVwicGhvbmVOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGhvbmVOdW1iZXJcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Nsci10YWItY29udGVudD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jbHItdGFiPlxyXG48L2Nsci10YWJzPlxyXG5cclxuPG5nLXRlbXBsYXRlIHZkckRpYWxvZ0J1dHRvbnM+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7ICdjb21tb24uY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIih1c2VFeGlzdGluZyAmJiBzZWxlY3RlZEN1c3RvbWVyLmxlbmd0aCA9PT0gMCkgfHwgKGNyZWF0ZU5ldyAmJiBjdXN0b21lckZvcm0uaW52YWxpZClcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgID5cclxuICAgICAgICB7eyAnY29tbW9uLm9rYXknIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|