ng-easycommerce 0.0.595 → 0.0.597
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/README.md +8 -0
- package/bundles/ng-easycommerce.umd.js +81 -13
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-component/account-ec/order-ec/order-ec.component.js +9 -2
- package/esm2015/lib/ec-component/account-ec/orders-list-ec/orders-list-ec.component.js +12 -4
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +18 -3
- package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +7 -1
- package/esm2015/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +14 -4
- package/esm2015/lib/ec-component/header-ec/header-ec.component.js +6 -1
- package/esm2015/lib/ec-component/product-detail-ec/product-detail-ec.component.js +4 -1
- package/esm2015/lib/ec-component/product-ec/product-ec.component.js +13 -3
- package/esm2015/lib/ec-component/sidebar-ec/sidebar-ec.component.js +13 -3
- package/esm5/lib/ec-component/account-ec/order-ec/order-ec.component.js +9 -2
- package/esm5/lib/ec-component/account-ec/orders-list-ec/orders-list-ec.component.js +12 -4
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +18 -3
- package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +7 -1
- package/esm5/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +14 -4
- package/esm5/lib/ec-component/header-ec/header-ec.component.js +6 -1
- package/esm5/lib/ec-component/product-detail-ec/product-detail-ec.component.js +4 -1
- package/esm5/lib/ec-component/product-ec/product-ec.component.js +13 -3
- package/esm5/lib/ec-component/sidebar-ec/sidebar-ec.component.js +13 -3
- package/fesm2015/ng-easycommerce.js +81 -13
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +81 -13
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/account-ec/order-ec/order-ec.component.d.ts +3 -0
- package/lib/ec-component/account-ec/orders-list-ec/orders-list-ec.component.d.ts +4 -1
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +6 -1
- package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +1 -0
- package/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +5 -1
- package/lib/ec-component/header-ec/header-ec.component.d.ts +1 -0
- package/lib/ec-component/product-detail-ec/product-detail-ec.component.d.ts +1 -0
- package/lib/ec-component/product-ec/product-ec.component.d.ts +4 -1
- package/lib/ec-component/sidebar-ec/sidebar-ec.component.d.ts +5 -1
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -26,18 +26,21 @@ import { Constants } from '../../../core.consts';
|
|
|
26
26
|
import { OrdersService } from '../../../services/account/orders.service';
|
|
27
27
|
// import { OwlOptions } from 'projects/ng-easycommerce/src/lib/ec-component/product-detail-ec/node_modules/projects/ng-easycommerce/src/lib/ec-component/home-ec/node_modules/ngx-owl-carousel-o';
|
|
28
28
|
import { CartService } from '../../../services/cart.service';
|
|
29
|
+
import { ChannelConfigService } from '../../../services/channel-config.service';
|
|
29
30
|
var OrdersEcComponent = /** @class */ (function (_super) {
|
|
30
31
|
__extends(OrdersEcComponent, _super);
|
|
31
|
-
function OrdersEcComponent(ordersService, router, consts, cartService) {
|
|
32
|
+
function OrdersEcComponent(ordersService, router, consts, cartService, channelConfigService) {
|
|
32
33
|
var _this = _super.call(this) || this;
|
|
33
34
|
_this.ordersService = ordersService;
|
|
34
35
|
_this.router = router;
|
|
35
36
|
_this.consts = consts;
|
|
36
37
|
_this.cartService = cartService;
|
|
38
|
+
_this.channelConfigService = channelConfigService;
|
|
37
39
|
_this.loading = true;
|
|
38
40
|
_this.showImage = true;
|
|
39
41
|
_this.showPrice = false;
|
|
40
42
|
_this.creditAmountConfigured = false;
|
|
43
|
+
_this.hidePrices = false;
|
|
41
44
|
/**
|
|
42
45
|
* @description name -> nombre de clave de valuesToSort; asc -> true: ascendente, false: descendente
|
|
43
46
|
*/
|
|
@@ -182,12 +185,17 @@ var OrdersEcComponent = /** @class */ (function (_super) {
|
|
|
182
185
|
this.cartService.creditAmount$.subscribe(function (creditAmount) {
|
|
183
186
|
_this.creditAmountConfigured = creditAmount !== null;
|
|
184
187
|
});
|
|
188
|
+
this.channelConfigService.channelConfig$.subscribe(function (channel) {
|
|
189
|
+
var _a, _b;
|
|
190
|
+
_this.hidePrices = (_b = (_a = channel) === null || _a === void 0 ? void 0 : _a.hidePrices, (_b !== null && _b !== void 0 ? _b : false));
|
|
191
|
+
});
|
|
185
192
|
};
|
|
186
193
|
OrdersEcComponent.ctorParameters = function () { return [
|
|
187
194
|
{ type: OrdersService },
|
|
188
195
|
{ type: Router },
|
|
189
196
|
{ type: Constants },
|
|
190
|
-
{ type: CartService }
|
|
197
|
+
{ type: CartService },
|
|
198
|
+
{ type: ChannelConfigService }
|
|
191
199
|
]; };
|
|
192
200
|
__decorate([
|
|
193
201
|
Input()
|
|
@@ -195,11 +203,11 @@ var OrdersEcComponent = /** @class */ (function (_super) {
|
|
|
195
203
|
OrdersEcComponent = __decorate([
|
|
196
204
|
Component({
|
|
197
205
|
selector: 'app-orders-ec',
|
|
198
|
-
template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\n <section id=\"orders\" class=\"w-100\" *ngIf=\"!loading; else loadingView\">\n <div *ngIf=\"orders && orders.length; else noOrders\">\n
|
|
206
|
+
template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\n <section id=\"orders\" class=\"w-100\" *ngIf=\"!loading; else loadingView\">\n <ng-container *ngIf=\"!hidePrices\">\n <div *ngIf=\"orders && orders.length; else noOrders\">\n <div class=\"row mb-1 border-bottom\">\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'number' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('number')\">{{ 'order' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'paymentState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('paymentState')\">{{ 'payment-state' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'method' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('method')\">{{ 'shipment-method' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12 \">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'methodState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('methodState')\">\n {{ 'shipment-state' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'date' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('date')\">{{ 'date' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'total' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('total')\">{{ 'total' | translate }}:</p>\n </div>\n </div>\n <div class=\"row item border-bottom py-2\" *ngFor=\"let order of orders\">\n <div class=\"col-lg-2 col-12\">\n <h5 class=\"fw-bold\">\n {{ order.number }}\n </h5>\n <!-- <ng-container *ngIf=\"showImage\">\n <ng-container *ngIf=\"order.items[0].product.variants[0]?.images?.length ; else defaultpicture\">\n <img class=\"smc maxwidth\" [src]=\"mediaUrl + order.items[0].product.variants[0].images[0]\" alt=\"\">\n </ng-container>\n <ng-template #defaultpicture>\n <img *ngIf=\"order.items[0].product.picturesdefault\" class=\"smc maxwidth\"\n [src]=\"mediaUrl + order.items[0].product.picturesdefault[0]\" alt=\"\">\n </ng-template>\n </ng-container> -->\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"price\" *ngIf=\"order.payments && order.payments.length > 0\">\n {{ order.payments[0].state | translate | titlecase }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n\n <p class=\"price\">\n {{ order.shipments[0].method.name }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"price\">\n {{ order.shipments[0].state | translate | titlecase }}\n </p>\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\n <a *ngIf=\"order.tracking\" [href]=\"order.tracking\"\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver\n seguimiento</a>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"price\">\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <h5 class=\"fw-bold text-nowrap\" *ngIf=\"(creditAmountConfigured ? showPrice : true)\">\n {{ (order.totals.total) | ecCurrencySymbol }}\n </h5>\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\n 'see-order' | translate }}</button>\n </div>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template #noOrders>\n <div class=\"w-100 h-50\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <h5>{{ 'no-orders' | translate }}</h5>\n </div>\n </div>\n</ng-template>\n\n<ng-template #errorView>\n <div class=\"w-100 h-50\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <h4>{{ 'orders-error' | translate }}</h4>\n </div>\n </div>\n</ng-template>\n\n<ng-template #loadingView>\n <div class=\"w-100 h-50 py-5\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n </div>\n</ng-template>",
|
|
199
207
|
styles: ["#ordersEcComponent .btn.btdetalle{background-color:#000;color:#fff;border-color:#000;border-width:1px;border-radius:10px;padding:10px 0}#ordersEcComponent .btn.btdetalle:hover{background-color:#fff;color:#000;border-color:#000}.asc.dropdown-toggle::after{transform:rotate(180deg)}.applied.dropdown-toggle::after{color:#198754}"]
|
|
200
208
|
})
|
|
201
209
|
], OrdersEcComponent);
|
|
202
210
|
return OrdersEcComponent;
|
|
203
211
|
}(ComponentHelper));
|
|
204
212
|
export { OrdersEcComponent };
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLWxpc3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9hY2NvdW50LWVjL29yZGVycy1saXN0LWVjL29yZGVycy1saXN0LWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RSxtTUFBbU07QUFDbk0sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTzdEO0lBQXVDLHFDQUFlO0lBMkJsRCwyQkFBbUIsYUFBNEIsRUFBUyxNQUFjLEVBQVksTUFBaUIsRUFBVSxXQUF3QjtRQUFySSxZQUNJLGlCQUFPLFNBR1Y7UUFKa0IsbUJBQWEsR0FBYixhQUFhLENBQWU7UUFBUyxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVksWUFBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdkI5SCxhQUFPLEdBQUcsSUFBSSxDQUFDO1FBR2IsZUFBUyxHQUFZLElBQUksQ0FBQztRQUM1QixlQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDRCQUFzQixHQUFZLEtBQUssQ0FBQztRQUUvQzs7V0FFRztRQUNJLGlCQUFXLEdBQVEs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QUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQzFNO2lCQUNJO2dCQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDckYsQ0FBQyxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7b0JBQ25ELENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDcEs7UUFDTCxDQUFDLENBQUE7UUFFTyxnQkFBVSxHQUFHLFVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsVUFBVSxJQUFLLE9BQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FB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QyxhQUFhO2dCQUFpQixNQUFNO2dCQUFvQixTQUFTO2dCQUF1QixXQUFXOztJQXBCNUg7UUFBUixLQUFLLEVBQUU7d0RBQTJCO0lBUDFCLGlCQUFpQjtRQUw3QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZUFBZTtZQUN6QixpM0xBQTRDOztTQUUvQyxDQUFDO09BQ1csaUJBQWlCLENBb0w3QjtJQUFELHdCQUFDO0NBQUEsQUFwTEQsQ0FBdUMsZUFBZSxHQW9MckQ7U0FwTFksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgT3JkZXJzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FjY291bnQvb3JkZXJzLnNlcnZpY2UnO1xuLy8gaW1wb3J0IHsgT3dsT3B0aW9ucyB9IGZyb20gJ3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS9zcmMvbGliL2VjLWNvbXBvbmVudC9wcm9kdWN0LWRldGFpbC1lYy9ub2RlX21vZHVsZXMvcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlL3NyYy9saWIvZWMtY29tcG9uZW50L2hvbWUtZWMvbm9kZV9tb2R1bGVzL25neC1vd2wtY2Fyb3VzZWwtbyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLW9yZGVycy1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICdvcmRlcnMtbGlzdC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ29yZGVycy1saXN0LWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT3JkZXJzRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVibGljIG1lZGlhVXJsO1xuICAgIHB1YmxpYyBvcmRlcnM7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICAgIHB1YmxpYyBlcnJvcjtcbiAgICBwdWJsaWMgc29ydFZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgc2hvd0ltYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2hvd1ByaWNlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGNyZWRpdEFtb3VudENvbmZpZ3VyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBuYW1lIC0+IG5vbWJyZSBkZSBjbGF2ZSBkZSB2YWx1ZXNUb1NvcnQ7IGFzYyAtPiB0cnVlOiBhc2NlbmRlbnRlLCBmYWxzZTogZGVzY2VuZGVudGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVudFNvcnQ6IGFueSA9IHsgbmFtZTogJycsIGFzYzogdHJ1ZSB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHRydWUgLT4gb3JkZW5hIGRlIGZvcm1hIGFzY2VuZGVudGUgfCBmYWxzZSAtPiBvcmRlbmEgZGUgZm9ybWEgZGVjcmVjaWVudGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsdWVzVG9Tb3J0OiBhbnkgPSB7XG4gICAgICAgIG51bWJlcjogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ251bWJlcicgfSxcbiAgICAgICAgcGF5bWVudFN0YXRlOiB7IGFzYzogdHJ1ZSwgYXR0cmlidXRlOiAnc3RhdGUnIH0sXG4gICAgICAgIG1ldGhvZDogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ21ldGhvZCcsIHN1YkF0dHJpYnV0ZTogJ25hbWUnIH0sXG4gICAgICAgIG1ldGhvZFN0YXRlOiB7IGFzYzogdHJ1ZSwgYXR0cmlidXRlOiAnc3RhdGUnIH0sXG4gICAgICAgIGRhdGU6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdjaGVja291dENvbXBsZXRlZEF0JyB9LFxuICAgICAgICB0b3RhbDogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ3RvdGFsJyB9XG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBvcmRlcnNTZXJ2aWNlOiBPcmRlcnNTZXJ2aWNlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBjb25zdHM6IENvbnN0YW50cywgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tZWRpYVVybCA9IHRoaXMuY29uc3RzLm1lZGlhVXJsKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMub3JkZXJzU2VydmljZS51cGRhdGVPcmRlcnMoKTtcbiAgICAgICAgdGhpcy5vcmRlcnNTZXJ2aWNlLm9yZGVycyQucGlwZShmaWx0ZXIob3IgPT4gb3IpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICBvcmRlcnMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJzID0gdGhpcy5zb3J0ZWRCeU5ld2VzdChvcmRlcnMpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSAnb3JkZXJzLWVycm9yJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICB0aGlzLmVjT25Jbml0KClcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5zaG93UHJpY2UkLnN1YnNjcmliZSgoc2hvd1ByaWNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dQcmljZSA9IHNob3dQcmljZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY3JlZGl0QW1vdW50JC5zdWJzY3JpYmUoKGNyZWRpdEFtb3VudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVkaXRBbW91bnRDb25maWd1cmVkID0gY3JlZGl0QW1vdW50ICE9PSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzb3J0ZWRCeU5ld2VzdCA9IG9yZGVycyA9PiBvcmRlcnMgJiYgb3JkZXJzLmxlbmd0aCAmJiBvcmRlcnMuc29ydCgoYW5PcmRlciwgb3RoZXJPcmRlcikgPT4gYW5PcmRlci5udW1iZXIgPiBvdGhlck9yZGVyLm51bWJlciA/IC0xIDogMSlcblxuICAgIGdvVG9PcmRlciA9IChvcmRlcikgPT4ge1xuICAgICAgICB0aGlzLm9yZGVyc1NlcnZpY2Uuc2V0U2VsZWN0ZWRPcmRlcihvcmRlcik7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoKGBhY2NvdW50L29yZGVycy8ke29yZGVyLm51bWJlcn1gKSlcbiAgICB9XG5cbiAgICB0b0RhdGUgPSAoZGF0ZSwgZm9ybWF0KSA9PiBtb21lbnQoZGF0ZSkuZm9ybWF0KCFmb3JtYXQgJiYgJ0REL01NL1lZWVksIGg6bW06c3MgYScgfHwgZm9ybWF0KVxuXG4gICAgb3B0aW9uc0JveCA9IHtcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgYXV0b3BsYXk6IHRydWUsXG4gICAgICAgIHNtYXJ0U3BlZWQ6IDk1MCxcbiAgICAgICAgbWFyZ2luOiAxMCxcbiAgICAgICAgZG90czogZmFsc2UsXG4gICAgICAgIGRvdHNEYXRhOiBmYWxzZSxcbiAgICAgICAgbmF2VGV4dDogW1wiXCIsIFwiXCJdLFxuICAgICAgICByZXNwb25zaXZlOiB7XG4gICAgICAgICAgICAwOiB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNjAwOiB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMTAwMDoge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiAxLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBAZGVzY3JpcHRpb24gT3JkZW5hIGxhIGxpc3RhIGRlIG9yZGVuZXNcbiAgICAqIEBwYXJhbSB2YWx1ZSByZWNpYmUgdW5hIHZhbG9yIHF1ZSBkZWJlIGNvaW5jaWRpciBjb24gbGFzIGNsYXZlcyBkZSBsYSB2YXJpYWJsZSB2YWx1ZXNUb1NvcnRcbiAgICAqL1xuICAgIHNvcnRPcmRlcnMgPSB2YWx1ZSA9PiB7XG5cbiAgICAgICAgdGhpcy5zb3J0VmFsdWUgPSB2YWx1ZVxuXG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFNvcnQodGhpcy5zb3J0VmFsdWUsIHRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXS5hc2MpXG5cbiAgICAgICAgY29uc3QgY29tcGFyYXRvciA9XG4gICAgICAgICAgICAodGhpcy52YWx1ZXNUb1NvcnRbdGhpcy5zb3J0VmFsdWVdLmFzYylcbiAgICAgICAgICAgICAgICA/IFstMSwgMV1cbiAgICAgICAgICAgICAgICA6IFsxLCAtMV1cbiAgICAgICAgdGhpcy52YWx1ZXNUb1NvcnRbdGhpcy5zb3J0VmFsdWVdLmFzYyA9ICF0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjXG5cbiAgICAgICAgbGV0IHR5cGVWYWx1ZVxuICAgICAgICBpZiAodGhpcy5vcmRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdHlwZVZhbHVlID0gdHlwZW9mICh0aGlzLm9yZGVyc1swXSlcbiAgICAgICAgfVxuICAgICAgICBsZXQgc29ydEZ1bmN0aW9uID0gdGhpcy5nZXRTb3J0RnVuY3Rpb24odGhpcy5zb3J0VmFsdWUpXG5cbiAgICAgICAgdGhpcy5vcmRlcnMgPVxuICAgICAgICAgICAgdGhpcy5zb3J0VmFsdWVcbiAgICAgICAgICAgICAgICA/IHRoaXMub3JkZXJzLnNvcnQoKGFPcmRlcnMsIG90aGVyT3JkZXJzKSA9PiBzb3J0RnVuY3Rpb24oYU9yZGVycywgb3RoZXJPcmRlcnMsIHRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXSwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgOiB0aGlzLm9yZGVyc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiByZXRvcm5hIGxhIGZ1bmNpb24gcXVlIHNlIGRlYmUgdXRpbGl6YXIgcGFyYSBlbCBzb3J0IGRlbCBhcnJlZ2xvXG4gICAgICogQHBhcmFtIHZhbHVlIHBhcmFtZXRybyBxdWUgaW5kaWNhIGVsIHRpcG8gZGUgZnVuY2lvbiBxdWUgZGViZSByZXRvcm5hclxuICAgICAqIEByZXR1cm5zIGZ1bmNpb24gcGFyYSB1dGlsaXphciBlbiBsYSBidXNxdWVkYVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U29ydEZ1bmN0aW9uID0gKHZhbHVlKTogRnVuY3Rpb24gPT4ge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdwYXltZW50U3RhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnRQYXltZW50U3RhdGVcbiAgICAgICAgICAgIGNhc2UgJ21ldGhvZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNoaXBtZW50c1xuICAgICAgICAgICAgY2FzZSAnbWV0aG9kU3RhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnRTaGlwbWVudHNcbiAgICAgICAgICAgIGNhc2UgJ3RvdGFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0TnVtYmVyXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnRUZXh0XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBGdW5jaW9uZXMgcGFyYSBvcmRlcm5hciAqL1xuICAgIHByaXZhdGUgc29ydFBheW1lbnRTdGF0ZSA9IChhT3JkZXJzLCBvdGhlck9yZGVycywgZGF0YSwgY29tcGFyYXRvcikgPT4ge1xuICAgICAgICByZXR1cm4gKGFPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzLnBheW1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSlcbiAgICAgICAgICAgID8gdGhpcy50aWVCcmVha2VyKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBjb21wYXJhdG9yKVxuICAgICAgICAgICAgOiBTdHJpbmcoYU9yZGVycy5wYXltZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPCBTdHJpbmcob3RoZXJPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRTaGlwbWVudHMgPSAoYU9yZGVycywgb3RoZXJPcmRlcnMsIGRhdGEsIGNvbXBhcmF0b3IpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc3ViQXR0cmlidXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKGFPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXVtkYXRhLnN1YkF0dHJpYnV0ZV0gPT0gb3RoZXJPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXVtkYXRhLnN1YkF0dHJpYnV0ZV0pXG4gICAgICAgICAgICAgICAgPyB0aGlzLnRpZUJyZWFrZXIoYU9yZGVycywgb3RoZXJPcmRlcnMsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdW2RhdGEuc3ViQXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA8IFN0cmluZyhvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdW2RhdGEuc3ViQXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGFPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSA9PSBvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKVxuICAgICAgICAgICAgICAgID8gdGhpcy50aWVCcmVha2VyKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBjb21wYXJhdG9yKVxuICAgICAgICAgICAgICAgIDogU3RyaW5nKGFPcmRlcnMuc2hpcG1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA8IFN0cmluZyhvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc29ydE51bWJlciA9IChhT3JkZXJzLCBvdGhlck9yZGVycywgZGF0YSwgY29tcGFyYXRvcikgPT4gYU9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0gPCBvdGhlck9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0gPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxuXG4gICAgcHJpdmF0ZSBzb3J0VGV4dCA9IChhT3JkZXJzLCBvdGhlck9yZGVycywgZGF0YSwgY29tcGFyYXRvcikgPT4ge1xuICAgICAgICByZXR1cm4gKGFPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzW2RhdGEuYXR0cmlidXRlXSlcbiAgICAgICAgICAgID8gYU9yZGVycy5udW1iZXIudG9Mb3dlckNhc2UoKSA8IG90aGVyT3JkZXJzLm51bWJlci50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cbiAgICAgICAgICAgIDogU3RyaW5nKGFPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gZnVuY2lvbiB1dGlsaXphZGEgcGFyYSBkZXNlbXBhdGUuXG4gICAgICogQHBhcmFtIGFPcmRlcnNcbiAgICAgKiBAcGFyYW0gb3RoZXJPcmRlcnNcbiAgICAgKiBAcGFyYW0gY29tcGFyYXRvclxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHJpdmF0ZSB0aWVCcmVha2VyID0gKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBjb21wYXJhdG9yKSA9PiBhT3JkZXJzLm51bWJlci50b0xvd2VyQ2FzZSgpIDwgb3RoZXJPcmRlcnMubnVtYmVyLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGNhbWJpYSBsb3MgdmFsb3JlcyBkZSBsYSB2YXJpYWJsZSBjdXJyZW50U29ydFxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIGFzY1xuICAgICAqL1xuICAgIHByaXZhdGUgc2V0Q3VycmVudFNvcnQgPSAobmFtZTogc3RyaW5nLCBhc2M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydC5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydC5hc2MgPSBhc2NcbiAgICB9XG59XG4iXX0=
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLWxpc3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9hY2NvdW50LWVjL29yZGVycy1saXN0LWVjL29yZGVycy1saXN0LWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RSxtTUFBbU07QUFDbk0sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBT2hGO0lBQXVDLHFDQUFlO0lBNEJsRCwyQkFBbUIsYUFBNEIsRUFBUyxNQUFjLEVBQVksTUFBaUIsRUFBVSxXQUF3QixFQUFVLG9CQUEwQztRQUF6TCxZQUNJLGlCQUFPLFNBR1Y7UUFKa0IsbUJBQWEsR0FBYixhQUFhLENBQWU7UUFBUyxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVksWUFBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsMEJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQXhCbEwsYUFBTyxHQUFHLElBQUksQ0FBQztRQUdiLGVBQVMsR0FBWSxJQUFJ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SSxFQUFFLFVBQVUsSUFBSyxPQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQXJGLENBQXFGLENBQUE7UUFFOUksY0FBUSxHQUFHLFVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsVUFBVTtZQUN0RCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNJLENBQUMsQ0FBQTtRQUdEOzs7Ozs7V0FNRztRQUNLLGdCQUFVLEdBQUcsVUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsSUFBSyxPQUFBLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQS9GLENBQStGLENBQUE7UUFFMUo7Ozs7V0FJRztRQUNLLG9CQUFjLEdBQUcsVUFBQyxJQUFZLEVBQUUsR0FBWTtZQUNoRCxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDN0IsS0FBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQzlCLENBQUMsQ0FBQTtRQXpKRyxLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFBOztJQUN4QixDQUFDO0lBRUQsb0NBQVEsR0FBUjtRQUFBLGlCQXVCQztRQXRCRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLEVBQUYsQ0FBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ3ZELFVBQUEsTUFBTTtZQUNGLEtBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxLQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUN4QixDQUFDLEVBQ0QsVUFBQSxHQUFHO1lBQ0MsS0FBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsS0FBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7UUFDaEMsQ0FBQyxDQUNKLENBQUE7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBQyxTQUFTO1lBQzVDLEtBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQUMsWUFBWTtZQUNsRCxLQUFJLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxLQUFLLElBQUksQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFVBQUEsT0FBTzs7WUFDdEQsS0FBSSxDQUFDLFVBQVUsZUFBRyxPQUFPLDBDQUFFLFVBQVUsdUNBQUksS0FBSyxFQUFBLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnQkE3QmlDLGFBQWE7Z0JBQWlCLE1BQU07Z0JBQW9CLFNBQVM7Z0JBQXVCLFdBQVc7Z0JBQWdDLG9CQUFvQjs7SUFyQmhMO1FBQVIsS0FBSyxFQUFFO3dEQUEyQjtJQVAxQixpQkFBaUI7UUFMN0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGVBQWU7WUFDekIseXdNQUE0Qzs7U0FFL0MsQ0FBQztPQUNXLGlCQUFpQixDQXdMN0I7SUFBRCx3QkFBQztDQUFBLEFBeExELENBQXVDLGVBQWUsR0F3THJEO1NBeExZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IE9yZGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hY2NvdW50L29yZGVycy5zZXJ2aWNlJztcbi8vIGltcG9ydCB7IE93bE9wdGlvbnMgfSBmcm9tICdwcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2Uvc3JjL2xpYi9lYy1jb21wb25lbnQvcHJvZHVjdC1kZXRhaWwtZWMvbm9kZV9tb2R1bGVzL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS9zcmMvbGliL2VjLWNvbXBvbmVudC9ob21lLWVjL25vZGVfbW9kdWxlcy9uZ3gtb3dsLWNhcm91c2VsLW8nO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtb3JkZXJzLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJ29yZGVycy1saXN0LWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnb3JkZXJzLWxpc3QtZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPcmRlcnNFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgbWVkaWFVcmw7XG4gICAgcHVibGljIG9yZGVycztcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGVycm9yO1xuICAgIHB1YmxpYyBzb3J0VmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBzaG93SW1hZ2U6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBzaG93UHJpY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY3JlZGl0QW1vdW50Q29uZmlndXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gbmFtZSAtPiBub21icmUgZGUgY2xhdmUgZGUgdmFsdWVzVG9Tb3J0OyBhc2MgLT4gdHJ1ZTogYXNjZW5kZW50ZSwgZmFsc2U6IGRlc2NlbmRlbnRlXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbnRTb3J0OiBhbnkgPSB7IG5hbWU6ICcnLCBhc2M6IHRydWUgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiB0cnVlIC0+IG9yZGVuYSBkZSBmb3JtYSBhc2NlbmRlbnRlIHwgZmFsc2UgLT4gb3JkZW5hIGRlIGZvcm1hIGRlY3JlY2llbnRlXG4gICAgICovXG4gICAgcHVibGljIHZhbHVlc1RvU29ydDogYW55ID0ge1xuICAgICAgICBudW1iZXI6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdudW1iZXInIH0sXG4gICAgICAgIHBheW1lbnRTdGF0ZTogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ3N0YXRlJyB9LFxuICAgICAgICBtZXRob2Q6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICdtZXRob2QnLCBzdWJBdHRyaWJ1dGU6ICduYW1lJyB9LFxuICAgICAgICBtZXRob2RTdGF0ZTogeyBhc2M6IHRydWUsIGF0dHJpYnV0ZTogJ3N0YXRlJyB9LFxuICAgICAgICBkYXRlOiB7IGFzYzogdHJ1ZSwgYXR0cmlidXRlOiAnY2hlY2tvdXRDb21wbGV0ZWRBdCcgfSxcbiAgICAgICAgdG90YWw6IHsgYXNjOiB0cnVlLCBhdHRyaWJ1dGU6ICd0b3RhbCcgfVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgb3JkZXJzU2VydmljZTogT3JkZXJzU2VydmljZSwgcHVibGljIHJvdXRlcjogUm91dGVyLCBwcm90ZWN0ZWQgY29uc3RzOiBDb25zdGFudHMsIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIGNoYW5uZWxDb25maWdTZXJ2aWNlOiBDaGFubmVsQ29uZmlnU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lZGlhVXJsID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcmRlcnNTZXJ2aWNlLnVwZGF0ZU9yZGVycygpO1xuICAgICAgICB0aGlzLm9yZGVyc1NlcnZpY2Uub3JkZXJzJC5waXBlKGZpbHRlcihvciA9PiBvcikpLnN1YnNjcmliZShcbiAgICAgICAgICAgIG9yZGVycyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlcnMgPSB0aGlzLnNvcnRlZEJ5TmV3ZXN0KG9yZGVycyk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9ICdvcmRlcnMtZXJyb3InO1xuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnNob3dQcmljZSQuc3Vic2NyaWJlKChzaG93UHJpY2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1ByaWNlID0gc2hvd1ByaWNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jcmVkaXRBbW91bnQkLnN1YnNjcmliZSgoY3JlZGl0QW1vdW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWRpdEFtb3VudENvbmZpZ3VyZWQgPSBjcmVkaXRBbW91bnQgIT09IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYW5uZWxDb25maWdTZXJ2aWNlLmNoYW5uZWxDb25maWckLnN1YnNjcmliZShjaGFubmVsID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVByaWNlcyA9IGNoYW5uZWw/LmhpZGVQcmljZXMgPz8gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNvcnRlZEJ5TmV3ZXN0ID0gb3JkZXJzID0+IG9yZGVycyAmJiBvcmRlcnMubGVuZ3RoICYmIG9yZGVycy5zb3J0KChhbk9yZGVyLCBvdGhlck9yZGVyKSA9PiBhbk9yZGVyLm51bWJlciA+IG90aGVyT3JkZXIubnVtYmVyID8gLTEgOiAxKVxuXG4gICAgZ29Ub09yZGVyID0gKG9yZGVyKSA9PiB7XG4gICAgICAgIHRoaXMub3JkZXJzU2VydmljZS5zZXRTZWxlY3RlZE9yZGVyKG9yZGVyKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgoYGFjY291bnQvb3JkZXJzLyR7b3JkZXIubnVtYmVyfWApKVxuICAgIH1cblxuICAgIHRvRGF0ZSA9IChkYXRlLCBmb3JtYXQpID0+IG1vbWVudChkYXRlKS5mb3JtYXQoIWZvcm1hdCAmJiAnREQvTU0vWVlZWSwgaDptbTpzcyBhJyB8fCBmb3JtYXQpXG5cbiAgICBvcHRpb25zQm94ID0ge1xuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICBhdXRvcGxheTogdHJ1ZSxcbiAgICAgICAgc21hcnRTcGVlZDogOTUwLFxuICAgICAgICBtYXJnaW46IDEwLFxuICAgICAgICBkb3RzOiBmYWxzZSxcbiAgICAgICAgZG90c0RhdGE6IGZhbHNlLFxuICAgICAgICBuYXZUZXh0OiBbXCJcIiwgXCJcIl0sXG4gICAgICAgIHJlc3BvbnNpdmU6IHtcbiAgICAgICAgICAgIDA6IHtcbiAgICAgICAgICAgICAgICBpdGVtczogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICA2MDA6IHtcbiAgICAgICAgICAgICAgICBpdGVtczogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAxMDAwOiB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IDEsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBkZXNjcmlwdGlvbiBPcmRlbmEgbGEgbGlzdGEgZGUgb3JkZW5lc1xuICAgICogQHBhcmFtIHZhbHVlIHJlY2liZSB1bmEgdmFsb3IgcXVlIGRlYmUgY29pbmNpZGlyIGNvbiBsYXMgY2xhdmVzIGRlIGxhIHZhcmlhYmxlIHZhbHVlc1RvU29ydFxuICAgICovXG4gICAgc29ydE9yZGVycyA9IHZhbHVlID0+IHtcblxuICAgICAgICB0aGlzLnNvcnRWYWx1ZSA9IHZhbHVlXG5cbiAgICAgICAgdGhpcy5zZXRDdXJyZW50U29ydCh0aGlzLnNvcnRWYWx1ZSwgdGhpcy52YWx1ZXNUb1NvcnRbdGhpcy5zb3J0VmFsdWVdLmFzYylcblxuICAgICAgICBjb25zdCBjb21wYXJhdG9yID1cbiAgICAgICAgICAgICh0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjKVxuICAgICAgICAgICAgICAgID8gWy0xLCAxXVxuICAgICAgICAgICAgICAgIDogWzEsIC0xXVxuICAgICAgICB0aGlzLnZhbHVlc1RvU29ydFt0aGlzLnNvcnRWYWx1ZV0uYXNjID0gIXRoaXMudmFsdWVzVG9Tb3J0W3RoaXMuc29ydFZhbHVlXS5hc2NcblxuICAgICAgICBsZXQgdHlwZVZhbHVlXG4gICAgICAgIGlmICh0aGlzLm9yZGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0eXBlVmFsdWUgPSB0eXBlb2YgKHRoaXMub3JkZXJzWzBdKVxuICAgICAgICB9XG4gICAgICAgIGxldCBzb3J0RnVuY3Rpb24gPSB0aGlzLmdldFNvcnRGdW5jdGlvbih0aGlzLnNvcnRWYWx1ZSlcblxuICAgICAgICB0aGlzLm9yZGVycyA9XG4gICAgICAgICAgICB0aGlzLnNvcnRWYWx1ZVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcmRlcnMuc29ydCgoYU9yZGVycywgb3RoZXJPcmRlcnMpID0+IHNvcnRGdW5jdGlvbihhT3JkZXJzLCBvdGhlck9yZGVycywgdGhpcy52YWx1ZXNUb1NvcnRbdGhpcy5zb3J0VmFsdWVdLCBjb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3JkZXJzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHJldG9ybmEgbGEgZnVuY2lvbiBxdWUgc2UgZGViZSB1dGlsaXphciBwYXJhIGVsIHNvcnQgZGVsIGFycmVnbG9cbiAgICAgKiBAcGFyYW0gdmFsdWUgcGFyYW1ldHJvIHF1ZSBpbmRpY2EgZWwgdGlwbyBkZSBmdW5jaW9uIHF1ZSBkZWJlIHJldG9ybmFyXG4gICAgICogQHJldHVybnMgZnVuY2lvbiBwYXJhIHV0aWxpemFyIGVuIGxhIGJ1c3F1ZWRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTb3J0RnVuY3Rpb24gPSAodmFsdWUpOiBGdW5jdGlvbiA9PiB7XG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3BheW1lbnRTdGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydFBheW1lbnRTdGF0ZVxuICAgICAgICAgICAgY2FzZSAnbWV0aG9kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0U2hpcG1lbnRzXG4gICAgICAgICAgICBjYXNlICdtZXRob2RTdGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNoaXBtZW50c1xuICAgICAgICAgICAgY2FzZSAndG90YWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnROdW1iZXJcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydFRleHRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIEZ1bmNpb25lcyBwYXJhIG9yZGVybmFyICovXG4gICAgcHJpdmF0ZSBzb3J0UGF5bWVudFN0YXRlID0gKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBkYXRhLCBjb21wYXJhdG9yKSA9PiB7XG4gICAgICAgIHJldHVybiAoYU9yZGVycy5wYXltZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0gPT0gb3RoZXJPcmRlcnMucGF5bWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKVxuICAgICAgICAgICAgPyB0aGlzLnRpZUJyZWFrZXIoYU9yZGVycywgb3RoZXJPcmRlcnMsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICA6IFN0cmluZyhhT3JkZXJzLnBheW1lbnRzWzBdW2RhdGEuYXR0cmlidXRlXSkudG9Mb3dlckNhc2UoKSA8IFN0cmluZyhvdGhlck9yZGVycy5wYXltZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxuICAgIH1cblxuICAgIHByaXZhdGUgc29ydFNoaXBtZW50cyA9IChhT3JkZXJzLCBvdGhlck9yZGVycywgZGF0YSwgY29tcGFyYXRvcikgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdWJBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdW2RhdGEuc3ViQXR0cmlidXRlXSA9PSBvdGhlck9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdW2RhdGEuc3ViQXR0cmlidXRlXSlcbiAgICAgICAgICAgICAgICA/IHRoaXMudGllQnJlYWtlcihhT3JkZXJzLCBvdGhlck9yZGVycywgY29tcGFyYXRvcilcbiAgICAgICAgICAgICAgICA6IFN0cmluZyhhT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV1bZGF0YS5zdWJBdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV1bZGF0YS5zdWJBdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdID09IG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pXG4gICAgICAgICAgICAgICAgPyB0aGlzLnRpZUJyZWFrZXIoYU9yZGVycywgb3RoZXJPcmRlcnMsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcoYU9yZGVycy5zaGlwbWVudHNbMF1bZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpIDwgU3RyaW5nKG90aGVyT3JkZXJzLnNoaXBtZW50c1swXVtkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0TnVtYmVyID0gKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBkYXRhLCBjb21wYXJhdG9yKSA9PiBhT3JkZXJzW2RhdGEuYXR0cmlidXRlXSA8IG90aGVyT3JkZXJzW2RhdGEuYXR0cmlidXRlXSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXG5cbiAgICBwcml2YXRlIHNvcnRUZXh0ID0gKGFPcmRlcnMsIG90aGVyT3JkZXJzLCBkYXRhLCBjb21wYXJhdG9yKSA9PiB7XG4gICAgICAgIHJldHVybiAoYU9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0gPT0gb3RoZXJPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdKVxuICAgICAgICAgICAgPyBhT3JkZXJzLm51bWJlci50b0xvd2VyQ2FzZSgpIDwgb3RoZXJPcmRlcnMubnVtYmVyLnRvTG93ZXJDYXNlKCkgPyBjb21wYXJhdG9yWzBdIDogY29tcGFyYXRvclsxXVxuICAgICAgICAgICAgOiBTdHJpbmcoYU9yZGVyc1tkYXRhLmF0dHJpYnV0ZV0pLnRvTG93ZXJDYXNlKCkgPCBTdHJpbmcob3RoZXJPcmRlcnNbZGF0YS5hdHRyaWJ1dGVdKS50b0xvd2VyQ2FzZSgpID8gY29tcGFyYXRvclswXSA6IGNvbXBhcmF0b3JbMV1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHV0aWxpemFkYSBwYXJhIGRlc2VtcGF0ZS5cbiAgICAgKiBAcGFyYW0gYU9yZGVyc1xuICAgICAqIEBwYXJhbSBvdGhlck9yZGVyc1xuICAgICAqIEBwYXJhbSBjb21wYXJhdG9yXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHRpZUJyZWFrZXIgPSAoYU9yZGVycywgb3RoZXJPcmRlcnMsIGNvbXBhcmF0b3IpID0+IGFPcmRlcnMubnVtYmVyLnRvTG93ZXJDYXNlKCkgPCBvdGhlck9yZGVycy5udW1iZXIudG9Mb3dlckNhc2UoKSA/IGNvbXBhcmF0b3JbMF0gOiBjb21wYXJhdG9yWzFdXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY2FtYmlhIGxvcyB2YWxvcmVzIGRlIGxhIHZhcmlhYmxlIGN1cnJlbnRTb3J0XG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcGFyYW0gYXNjXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRDdXJyZW50U29ydCA9IChuYW1lOiBzdHJpbmcsIGFzYzogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0Lm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmN1cnJlbnRTb3J0LmFzYyA9IGFzY1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -74,9 +74,10 @@ import { CartService } from '../../services/cart.service';
|
|
|
74
74
|
import { ComponentHelper } from "../../classes/component-helper";
|
|
75
75
|
import { ToastService } from "../../utils/toast.service";
|
|
76
76
|
import { AddressingService } from '../../services/checkout/addressing.service';
|
|
77
|
+
import { ChannelConfigService } from '../../services/channel-config.service';
|
|
77
78
|
var CartEcComponent = /** @class */ (function (_super) {
|
|
78
79
|
__extends(CartEcComponent, _super);
|
|
79
|
-
function CartEcComponent(cartService, authService, consts, productsService, router, modalService, toastrService, addressingService) {
|
|
80
|
+
function CartEcComponent(cartService, authService, consts, productsService, router, modalService, toastrService, addressingService, channelConfigService) {
|
|
80
81
|
var _this = _super.call(this) || this;
|
|
81
82
|
_this.cartService = cartService;
|
|
82
83
|
_this.authService = authService;
|
|
@@ -86,6 +87,7 @@ var CartEcComponent = /** @class */ (function (_super) {
|
|
|
86
87
|
_this.modalService = modalService;
|
|
87
88
|
_this.toastrService = toastrService;
|
|
88
89
|
_this.addressingService = addressingService;
|
|
90
|
+
_this.channelConfigService = channelConfigService;
|
|
89
91
|
_this.variantsToShow = ['TALLE', 'COLOR'];
|
|
90
92
|
_this.isLoggedIn = false;
|
|
91
93
|
_this.mediaUrl = '';
|
|
@@ -95,6 +97,9 @@ var CartEcComponent = /** @class */ (function (_super) {
|
|
|
95
97
|
_this.updateStock = false;
|
|
96
98
|
_this.exitUpdate = false;
|
|
97
99
|
_this.isDisabled = false;
|
|
100
|
+
_this.hidePrices = false;
|
|
101
|
+
_this.hideDiscounts = false;
|
|
102
|
+
_this.hideTaxes = false;
|
|
98
103
|
_this.toDecimal = function (amount) { return _this.consts.toDecimal(amount); };
|
|
99
104
|
_this.actualizarCantidad = function (item, cantidad, stock, id) {
|
|
100
105
|
if (id) {
|
|
@@ -179,6 +184,15 @@ var CartEcComponent = /** @class */ (function (_super) {
|
|
|
179
184
|
window.scroll(0, 0);
|
|
180
185
|
this.cartService.promotions.subscribe(function (promotions) { return _this.promotions = promotions; });
|
|
181
186
|
// console.log(this.cartService.getTaxes());
|
|
187
|
+
this.channelConfigService.channelConfig$.subscribe(function (channel) {
|
|
188
|
+
var _a, _b, _c, _d, _e, _f;
|
|
189
|
+
_this.hidePrices = (_b = (_a = channel) === null || _a === void 0 ? void 0 : _a.hidePrices, (_b !== null && _b !== void 0 ? _b : false));
|
|
190
|
+
_this.hideDiscounts = (_d = (_c = channel) === null || _c === void 0 ? void 0 : _c.hideDiscounts, (_d !== null && _d !== void 0 ? _d : false));
|
|
191
|
+
_this.hideTaxes = (_f = (_e = channel) === null || _e === void 0 ? void 0 : _e.hideTaxes, (_f !== null && _f !== void 0 ? _f : false));
|
|
192
|
+
if (_this.hidePrices) {
|
|
193
|
+
_this.router.navigate(['/']);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
182
196
|
this.ecOnInit();
|
|
183
197
|
};
|
|
184
198
|
CartEcComponent.prototype.redirectCheckout = function () {
|
|
@@ -452,7 +466,8 @@ var CartEcComponent = /** @class */ (function (_super) {
|
|
|
452
466
|
{ type: Router },
|
|
453
467
|
{ type: BsModalService },
|
|
454
468
|
{ type: ToastService },
|
|
455
|
-
{ type: AddressingService }
|
|
469
|
+
{ type: AddressingService },
|
|
470
|
+
{ type: ChannelConfigService }
|
|
456
471
|
]; };
|
|
457
472
|
CartEcComponent = __decorate([
|
|
458
473
|
Component({
|
|
@@ -464,4 +479,4 @@ var CartEcComponent = /** @class */ (function (_super) {
|
|
|
464
479
|
return CartEcComponent;
|
|
465
480
|
}(ComponentHelper));
|
|
466
481
|
export { CartEcComponent };
|
|
467
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NhcnQtZWMvY2FydC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBOEIsTUFBTSxlQUFlLENBQUE7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVUvRTtJQUFxQyxtQ0FBZTtJQWdCaEQseUJBQW1CLFdBQXdCLEVBQVMsV0FBd0IsRUFBWSxNQUFpQixFQUM5RixlQUFnQyxFQUFTLE1BQWMsRUFBUyxZQUE0QixFQUFZLGFBQTJCLEVBQVEsaUJBQW9DO1FBRDFMLFlBRUksaUJBQU8sU0FLVjtRQVBrQixpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVksWUFBTSxHQUFOLE1BQU0sQ0FBVztRQUM5RixxQkFBZSxHQUFmLGVBQWUsQ0FB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QUssR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUV6RSxJQUFJLGVBQWUsR0FBTSxrQkFBa0IsVUFBTyxDQUFDO1FBQ25ELE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7O2dCQTdXbUMsV0FBVztnQkFBc0IsV0FBVztnQkFBb0IsU0FBUztnQkFDN0UsZUFBZTtnQkFBaUIsTUFBTTtnQkFBdUIsY0FBYztnQkFBMkIsWUFBWTtnQkFBMkIsaUJBQWlCOztJQWpCakwsZUFBZTtRQUwzQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsYUFBYTtZQUN2QixZQUF1Qzs7U0FFMUMsQ0FBQztPQUNXLGVBQWUsQ0FzWTNCO0lBQUQsc0JBQUM7Q0FBQSxBQXRZRCxDQUFxQyxlQUFlLEdBc1luRDtTQXRZWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvbW9kYWxcIjtcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsL2JzLW1vZGFsLXJlZi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi9jb3JlLmNvbnN0c1wiO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvZHVjdHMvcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZVwiO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQWRkcmVzc2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGVja291dC9hZGRyZXNzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5kZWNsYXJlIHZhciAkOmFueTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYXJ0LWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FydC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FydC1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhcnRFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblxuICAgIHB1YmxpYyB2YXJpYW50c1RvU2hvdzogc3RyaW5nW10gPSBbJ1RBTExFJywgJ0NPTE9SJ107XG4gICAgcHVibGljIGlzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgbWVkaWFVcmwgPSAnJztcbiAgICBwdWJsaWMgbW9kYWxSZWY6IEJzTW9kYWxSZWYgfCBudWxsO1xuICAgIHB1YmxpYyBwcm9tb3Rpb25zID0gW107XG4gICAgcHVibGljIGl0ZW1zOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcHJpdmF0ZSBjYXJnYW5kbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBjaGFubmVsOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgdXBkYXRlU3RvY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgZXhpdFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByb3RlY3RlZCBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHVibGljIHByb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLCBwcm90ZWN0ZWQgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLHB1YmxpYyBhZGRyZXNzaW5nU2VydmljZTogQWRkcmVzc2luZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcbiAgICAgICAgdGhpcy5pc0xvZ2dlZEluID0gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICAgICAgdGhpcy5tZWRpYVVybCA9IHRoaXMuY29uc3RzLm1lZGlhVXJsKCk7XG5cbiAgICB9XG5cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLmlzTG9nZ2VkSW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUxvZ2dlZEluKCkge1xuICAgICAgICB0aGlzLmlzTG9nZ2VkSW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnByb21vdGlvbnMuc3Vic2NyaWJlKHByb21vdGlvbnMgPT4gdGhpcy5wcm9tb3Rpb25zID0gcHJvbW90aW9ucyk7XG4gICAgIC8vICAgIGNvbnNvbGUubG9nKHRoaXMuY2FydFNlcnZpY2UuZ2V0VGF4ZXMoKSk7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgfVxuXG4gICAgdG9EZWNpbWFsID0gKGFtb3VudCkgPT4gdGhpcy5jb25zdHMudG9EZWNpbWFsKGFtb3VudCk7XG5cbiAgICBhY3R1YWxpemFyQ2FudGlkYWQgPSAoaXRlbSwgY2FudGlkYWQsIHN0b2NrLCBpZD8pID0+IHtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0cnVlOyAvLyBBY3R1YWxpemEgbGEgcHJvcGllZGFkIHZpbmN1bGFkYSBhIGBbZGlzYWJsZWRdYFxuICAgICAgICAgICAgaWYgKGNhbnRpZGFkID4gMCAmJiBjYW50aWRhZCA8PSBzdG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UudXBkYXRlSXRlbVF1YW50aXR5KGl0ZW0sIGNhbnRpZGFkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IC8vIEZ1bmNpw7NuIGRlIGZsZWNoYSBwYXJhIHByZXNlcnZhciBlbCBjb250ZXh0b1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FudGlkYWQgPiAwICYmIGNhbnRpZGFkIDw9IHN0b2NrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS51cGRhdGVJdGVtUXVhbnRpdHkoaXRlbSwgY2FudGlkYWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFxuXG4gICAgcmVkaXJlY3RDaGVja291dCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuaGFzU3VmZmljaWVudENyZWRpdHNGb3JDYXJ0VG90YWwoKSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2NoZWNrb3V0YCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIk5vIHNlIHB1ZWRlIHJlZGlyaWdpciBhbCBjaGVja291dCBkZWJpZG8gYSB1bmEgdmFsaWRhY2nDs24gZmFsbGlkYS5cIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWRpcmVjdFJlZ2lzdGVyID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2F1dGgvbG9naW5gKVxuXG4gICAgb3Blbk1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7IGNsYXNzOiAnbW9kYWwteGwnLCBrZXlib2FyZDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcmVkaXJlY3REZXRhaWxQcm9kdWN0KHByb2R1Y3QpIHtcbiAgICAgICAgbGV0IHZhcmlhbnQgPSBwcm9kdWN0LnZhcmlhbnRzWzBdXG4gICAgICAgIGxldCBwYXRoID0gJy9wcm9kdWN0LydcbiAgICAgICAgcGF0aCArPSB2YXJpYW50LmNvZGVcbiAgICAgICAgcGF0aCArPSB2YXJpYW50Lm9wdGlvbnMubGVuZ3RoID8gXCI/dmFyaWFudD10cnVlXCIgOiBcIlwiXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aClcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgdmFyIGQgPSBuZXcgRGF0ZShkYXRlKSxcbiAgICAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpICsgMSksXG4gICAgICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxuICAgICAgICAgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcblxuICAgICBpZiAobW9udGgubGVuZ3RoIDwgMilcbiAgICAgICAgIG1vbnRoID0gJzAnICsgbW9udGg7XG4gICAgIGlmIChkYXkubGVuZ3RoIDwgMilcbiAgICAgICAgIGRheSA9ICcwJyArIGRheTtcblxuICAgICByZXR1cm4gW3llYXIsIG1vbnRoLCBkYXldLmpvaW4oJy0nKTtcbiB9XG5cbiAgICAgYXN5bmMgY2FyZ2FNb2RhbChpdGVtKXtcblxuICAgICAvLyBPYnRpZW5lIGxhcyBzZWRlcyBkZWwgY2xpZW50ZVxuICAgICBjb25zdCBzZWRlcyA9IGF3YWl0IHRoaXMuY2FydFNlcnZpY2UuZ2V0QWRkcmVzc0Jvb2soKTtcblxuICAgICAvLyBDcmVvIHVuYSBzZXJpZSBkZSB2YXJpYWJsZXMgcXVlIHZveSBhIG5lY2VzaXRhciwgaWQgcGFyYSBjb250cm9sYXIgbGFzIHZ1ZWx0YXMgcXVlIGRhIHkgY3VhbnRhcyBsaW5lYXMgaGF5IHkgYWxsSUQgcGFyYSBhbG1hY2VuYXIgbG9zIElEIGRlIGxvcyBsb3Rlcy5cbiAgICAgdmFyIGlkID0gMTtcbiAgICAgdmFyIHRoaXNfPXRoaXM7XG4gICAgIHZhciBhbGxJRCA9ICBbXTtcblxuICAgICAvLyBBw7FhZGUgbG9zIGRhdG9zIGFsIGVuY2FiZXphZG8gZGVsIE1vZGFsXG4gICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbmNhYmV6YWRvTW9kYWwnKS5pbm5lckhUTUwgPSAnPGEgY2xhc3M9XCJ0aXRsZSB0ZXh0LWRhcmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgaDUgZC1ibG9jayBtLTAgcC0wIG0tMCBwLTBcIj48cCBjbGFzcz1cIm5vbWJyZSBtYi0wXCIgaWQ9XCJwcm9kdWN0TmFtZVwiPicrIGl0ZW1bJ3Byb2R1Y3QnXVsnbmFtZSddKyc8L3A+PHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgcHMtMiBtcy0xXCIgaWQ9XCJwcm9kdWN0UmVmXCI+UmVmOicraXRlbVsndmFyaWFudF9pZCddKyc8L3NtYWxsPjwvYT4nO1xuXG4gICAgIC8vIEJvcnJhbW9zIHRvZG9zIGxvcyBkYXRvcyBkZSBsb3MgbG90ZXMgYW50ZXJpb3Jlc1xuICAgICB2YXIgYm9keVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsb3RfYm9keV90YWJsZVwiKSBhcyBIVE1MVGFibGVFbGVtZW50O1xuICAgICBib2R5VGFibGUuaW5uZXJIVE1MPScnO1xuXG4gICAgIC8vIFJlY29ycmUgdG9kb3MgbG9zIGFydGljdWxvcyB5IGVuY3VlbnRyYSBzaSB0aWVuZW4gbG90ZXMgbyBubywgc2kgdGllbmUgY3JlYSBsYXMgbGluZWFzXG4gICAgICAgdGhpc18uY2FydFNlcnZpY2UuZ2V0Q2FydDIoKS5mb3JFYWNoKGkgPT4ge1xuXG4gICAgICAgICAgICBpZiAoaVsnaXRlbV9pZCddID09IGl0ZW0uaXRlbV9pZCAmJiBpWydsb3QnXSAhPSAnJyl7XG4gICAgICAgICAgICAgICAgIGJvZHlUYWJsZS5pbm5lckhUTUw9Jyc7XG4gICAgICAgICAgICAgICAgIGlbJ2xvdCddLmZvckVhY2gobG90ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gYm9keVRhYmxlLmluc2VydFJvdyhib2R5VGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsMSA9IHJvdy5pbnNlcnRDZWxsKDApO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsMiA9IHJvdy5pbnNlcnRDZWxsKDEpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsMyA9IHJvdy5pbnNlcnRDZWxsKDIpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsNCA9IHJvdy5pbnNlcnRDZWxsKDMpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsNSA9IHJvdy5pbnNlcnRDZWxsKDQpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsNiA9IHJvdy5pbnNlcnRDZWxsKDUpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShsb3RbJ2RhdGVfcmVxdWVzdCddKSk7XG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDEuaW5uZXJIVE1MID0gJzxpbnB1dCBpZD1cImlkJytpZCsnXCIgIHN0eWxlPVwiYm9yZGVyOiAwO1wiIHZhbHVlPVwiJytsb3QuaWQrJ1wiIGRpc2FibGVkPic7XG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDIuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPVwibnVtYmVyXCIgaWQ9XCJxdWFudGl0eScraWQrJ1wiIHZhbHVlPSBcIicrIGxvdC5xdWFudGl0eSArJ1wiY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy01MFwiIG1heD1cIicrIGxvdC5xdWFudGl0eSArJ1wiPic7XG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDMuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPVwiZGF0ZVwiIHZhbHVlPVwiJysgdGhpcy5mb3JtYXREYXRlKGRhdGUpICsnXCIgaWQ9XCJkZWxpdmVyeURhdGUnK2lkKydcIiBjbGFzcz1cImZvcm0tY29udHJvbCB3LTc1XCI+JztcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgb3BjaW9uZXMgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgc2VkZXMuZm9yRWFjaChzZWRlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VkZS5pZCA9PSBsb3Quc2hpcHBpbmdfYWRkcmVzc19pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMrPSc8b3B0aW9uIHZhbHVlPVwiJytzZWRlLmlkKydcIiBzZWxlY3RlZD4nKyBzZWRlLmNpdHkrICcgLSAnICsgc2VkZS5zdHJlZXQrJzwvb3B0aW9uPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMrPSc8b3B0aW9uIHZhbHVlPVwiJytzZWRlLmlkKydcIj4nKyBzZWRlLmNpdHkrICcgLSAnICsgc2VkZS5zdHJlZXQrJzwvb3B0aW9uPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuICAgICAgICAgICAgICAgICAgICAgIGNlbGw0LmlubmVySFRNTCA9ICc8c2VsZWN0ICBpZD1cInNoaXBwaW5nQWRkcmVzcycraWQrJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sIHctNzVcIj4nK29wY2lvbmVzKyc8L3NlbGVjdD4nO1xuICAgICAgICAgICAgICAgICAgICAgIGNlbGw1LmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0blNlZ3VpclwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VFeGFtcGxlJytpZCsnXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1jb250cm9scz1cImNvbGxhcHNlRXhhbXBsZScraWQrJ1wiIHZhbHVlPVwiVmVyXCI+PC9pbnB1dD4nO1xuICAgICAgICAgICAgICAgICAgICAgIGNlbGw2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiY29sLTEgZmxleC1ncm93LTAgdGV4dC1yaWdodCBidG5Cb3JyYXIgZC1ub25lIGQtbWQtYmxvY2sgZC1ub25lIGQtbWQtYmxvY2tcIj48YnV0dG9uIHZhbHVlPVwiJysgbG90LmlkICsnXCIgY2xhc3M9XCJidG5cIiBpZD1cImJvdG9uQm9ycmFyXCI+PGltZyBzcmM9XCIuL2Fzc2V0cy9tYXF1ZXRhZG8vaW1nL2ljLWJvcnJhci5zdmdcIiBhbHQ9XCJcIj4gPC9idXR0b24+PC9kaXY+JztcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgcm93MiA9IGJvZHlUYWJsZS5pbnNlcnRSb3coYm9keVRhYmxlLnJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsYTIgID0gcm93Mi5pbnNlcnRDZWxsKDApXG4gICAgICAgICAgICAgICAgICAgICAgZmlsYTIuY29sU3BhbiA9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsYTIuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPVwiY29sbGFwc2VcIiBpZD1cImNvbGxhcHNlRXhhbXBsZScraWQrJ1wiPjxpbnB1dCBpZD1cIm5vdGVzJytpZCsnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB2YWx1ZT1cIicrbG90Lm5vdGVzKydcIiBwbGFjZWhvbGRlcj1cIkluZ3Jlc2UgdW4gY29tZW50YXJpbyBlbiBjYXNvIGRlIHF1ZSBzZWEgbmVjZXNhcmlvLlwiIHR5cGU9XCJ0ZXh0XCIvPjwvZGl2Pic7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBpZCsxO1xuXG4gICAgICAgICAgICAgICAgICAgICAgYWxsSUQucHVzaChsb3RbJ2lkJ10pO1xuICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICB9KTtcblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3RvbkFncmVnYXInKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgLy8gLy8gU2UgY2FsY3VsYSBsYSBjYW50aWRhZCB5IGVsIGNvbnRhZG9yIHBhcmEgcXVlIG5vIGV4Y2VkYSBsYSBjYW50aWRhZCBkZSBsYSBsaW5lYSBhbCBjcmVhciB1biBudWV2byBsb3RlLlxuICAgICAgICB2YXIgY2FudGlkYWRBY3R1YWw9MDtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IGlkOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpe1xuICAgICAgICAgICAgICAgY2FudGlkYWRBY3R1YWwgPSBjYW50aWRhZEFjdHVhbCArIHBhcnNlSW50KCg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1YW50aXR5XCIraW5kZXgpKS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2UgYcOxYWRlIGxhIGxpbmVhIHNpZW1wcmUgeSBjdWFuZG8gbGEgY2FudGlkYWQgcmVzdGFudGUgbm8gc2VhIGNlcm8uXG4gICAgICAgIGlmIChjYW50aWRhZEFjdHVhbCA8IGl0ZW1bJ3F1YW50aXR5J10pe1xuICAgICAgICAgICAgIHZhciByb3cgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICAgdmFyIGNlbGwxID0gcm93Lmluc2VydENlbGwoMCk7XG4gICAgICAgICAgICAgdmFyIGNlbGwyID0gcm93Lmluc2VydENlbGwoMSk7XG4gICAgICAgICAgICAgdmFyIGNlbGwzID0gcm93Lmluc2VydENlbGwoMik7XG4gICAgICAgICAgICAgdmFyIGNlbGw0ID0gcm93Lmluc2VydENlbGwoMyk7XG4gICAgICAgICAgICAgdmFyIGNlbGw1ID0gcm93Lmluc2VydENlbGwoNCk7XG4gICAgICAgICAgICAgdmFyIGNlbGw2ID0gcm93Lmluc2VydENlbGwoNSk7XG4gICAgICAgICAgICAgY2VsbDEuaW5uZXJIVE1MID0gJzxpbnB1dCBpZD1cImlkJytpZCsnXCIgIHN0eWxlPVwiYm9yZGVyOiAwO1wiIHZhbHVlPVwiUGVuZHQuXCIgZGlzYWJsZWQ+JztcbiAgICAgICAgICAgICBjZWxsMi5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cInF1YW50aXR5JytpZCsnXCIgdmFsdWU9IFwiJysgKGl0ZW1bJ3F1YW50aXR5J10gLSAgY2FudGlkYWRBY3R1YWwgKSsnXCJjbGFzcz1cImZvcm0tY29udHJvbCB3LTUwXCIgbWF4PVwiJysgKGl0ZW1bJ3F1YW50aXR5J10gLSAgY2FudGlkYWRBY3R1YWwgKSArJ1wiPic7XG4gICAgICAgICAgICAgY2VsbDMuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPVwiZGF0ZVwiIGlkPVwiZGVsaXZlcnlEYXRlJytpZCsnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPic7XG4gICAgICAgICAgICAgdmFyIG9wY2lvbmVzID0gXCJcIlxuICAgICAgICAgICAgIHNlZGVzLmZvckVhY2goc2VkZSA9PiB7IG9wY2lvbmVzKz0nPG9wdGlvbiB2YWx1ZT1cIicrc2VkZS5pZCsnXCI+Jysgc2VkZS5jaXR5KyAnIC0gJyArIHNlZGUuc3RyZWV0Kyc8L29wdGlvbj4nO30pO1xuICAgICAgICAgICAgIGNlbGw0LmlubmVySFRNTCA9ICc8c2VsZWN0ICBpZD1cInNoaXBwaW5nQWRkcmVzcycraWQrJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sIHctNzVcIj4nK29wY2lvbmVzKyc8L3NlbGVjdD4nO1xuICAgICAgICAgICAgIGNlbGw1LmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0blNlZ3VpclwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VFeGFtcGxlJytpZCsnXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1jb250cm9scz1cImNvbGxhcHNlRXhhbXBsZScraWQrJ1wiIHZhbHVlPVwiVmVyXCI+PC9pbnB1dD4nO1xuICAgICAgICAgICAgIGNlbGw2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiY29sLTEgZmxleC1ncm93LTAgdGV4dC1yaWdodCBidG5Cb3JyYXIgZC1ub25lIGQtbWQtYmxvY2sgZC1ub25lIGQtbWQtYmxvY2tcIj48YnV0dG9uIGNsYXNzPVwiYnRuXCIgaWQ9XCJib3RvbkJvcnJhclwiPjxpbWcgc3JjPVwiLi9hc3NldHMvbWFxdWV0YWRvL2ltZy9pYy1ib3JyYXIuc3ZnXCIgYWx0PVwiXCI+IDwvYnV0dD48L2Rpdj4nO1xuICAgICAgICAgICAgIHZhciByb3cyID0gYm9keVRhYmxlLmluc2VydFJvdyhib2R5VGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICAgICAgIHZhciBmaWxhMiAgPSByb3cyLmluc2VydENlbGwoMClcbiAgICAgICAgICAgICBmaWxhMi5jb2xTcGFuID0gNjtcbiAgICAgICAgICAgICBmaWxhMi5pbm5lckhUTUw9JzxkaXYgY2xhc3M9XCJjb2xsYXBzZVwiIGlkPVwiY29sbGFwc2VFeGFtcGxlJytpZCsnXCI+PGlucHV0IGlkPVwibm90ZXMnK2lkKydcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiSW5ncmVzZSB1biBjb21lbnRhcmlvIGVuIGNhc28gZGUgcXVlIHNlYSBuZWNlc2FyaW8uXCIgdHlwZT1cInRleHRcIi8+PC9kaXY+JztcblxuXG4gICAgICAgICAgICAgaWQgPSBpZCsxO1xuICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdsb3QtbWF4LXF1YW50aXR5Jyk7XG4gICAgICAgIH1cbiAgICAgfVxuXG4gICAgIC8vIEN1YW5kbyBzZSBwdWxzYSBlbCBib3RvbiBwYXJhIGd1YXJkYXIgZWwgbG90ZSByZWNvcnJlIGxhIGZ1bmNpb24geSBlbCBmb3IgLCByZWNvcnJlIGxpbmVhIGEgbGluZWEgeSBsYW56YSBlbCBlbmRwb2ludCBjb24gdW5hIHBhdXNhIHBhcmEgcXVlIG5vIHNlIHBpZXJkYSBuaW5ndW5vIHkgbm8gc2UgcXVlZGUgcGlsbGFkby5cbiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdG9uR3VhcmRhcicpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ2xvdC1zYXZpbmcnKTtcbiAgICAgICAgICB0aGlzXy5jYXJnYW5kbyA9IHRydWU7XG4gICAgICAgICAgdmFyIGxvdElEID0gJyc7XG4gICAgICAgICAgdmFyIGNhbnRpZGFkTG90ZXM9MDtcbiAgICAgICAgICAvL0NvbnRyb2xhIHF1ZSBsYXMgY2FudGlkYWRlcyBkZSBsb3MgbG90ZXMgbm8gc2VhIHN1cGVyaW9yIGEgbGEgZGVsIHByb2R1Y3RvIGVuIGVsIGNhcnJpdG8uXG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IGlkOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICBpZiAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSl7XG4gICAgICAgICAgICAgICAgICAgIGNhbnRpZGFkTG90ZXMgPSBjYW50aWRhZExvdGVzICsgcGFyc2VJbnQoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpLnZhbHVlKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXRlbS5xdWFudGl0eSA+PSBjYW50aWRhZExvdGVzKXtcbiAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNhbnRpZGFkTG90ZXMpO1xuICAgICAgICAgICAgICAgdmFyIHkgPSAwO1xuICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgaWQ7IGluZGV4KyspIHtcblxuICAgICAgICAgICAgICAgaWYoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHF1YW50aXR5ID0gcGFyc2VJbnQoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGl2ZXJ5RGF0ZSA9ICg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGl2ZXJ5RGF0ZVwiK2luZGV4KSkudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaGlwcGluZ0FkZHJlc3MgPSAkKFwiI3NoaXBwaW5nQWRkcmVzc1wiK2luZGV4KS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5vdGVzID0gJChcIiNub3Rlc1wiK2luZGV4KS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNoaXBwaW5nQWRkcmVzc05hbWUgPSAgJCgnI3NoaXBwaW5nQWRkcmVzcycraW5kZXgrJyBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpZiAoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWRcIitpbmRleCkpKXtcbiAgICAgICAgICAgICAgICAgICAgbG90SUQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpZFwiK2luZGV4KSkudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBteUluZGV4ID0gYWxsSUQuaW5kZXhPZihwYXJzZUludChsb3RJRCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobXlJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbElELnNwbGljZShteUluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsb3RJRCA9PSAnUGVuZHQuJyl7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdudWV2bycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzXy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsMCxpdGVtLnZhcmlhbnRfaWQsMCxpdGVtLml0ZW1faWQscXVhbnRpdHksaXRlbS5wcm9kdWN0LnByaWNlLGl0ZW0ucXVhbnRpdHksaXRlbS5kaXNjb3VudCxpdGVtLnByb2R1Y3QucHJpY2UqcXVhbnRpdHksJ25ldycsZGVsaXZlcnlEYXRlLG5vdGVzLHBhcnNlSW50KHNoaXBwaW5nQWRkcmVzcyksc2hpcHBpbmdBZGRyZXNzTmFtZSwgJ25ld2xvdCcpO1xuXG4gICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvdElEICE9ICcnKXtcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGxvdElEKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc18uY2FydFNlcnZpY2UuYWRkVG9Mb3QoaXRlbS5wcm9kdWN0LDAsaXRlbS52YXJpYW50X2lkLHBhcnNlSW50KGxvdElEKSxpdGVtLml0ZW1faWQscXVhbnRpdHksaXRlbS5wcm9kdWN0LnByaWNlLGl0ZW0ucXVhbnRpdHksaXRlbS5kaXNjb3VudCxpdGVtLnByb2R1Y3QucHJpY2UqcXVhbnRpdHksJ2VkaXRlZCcsZGVsaXZlcnlEYXRlLG5vdGVzLHBhcnNlSW50KHNoaXBwaW5nQWRkcmVzcyksc2hpcHBpbmdBZGRyZXNzTmFtZSwgJ2VkaXRsb3QnKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIHk9aW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICAgICBhbGxJRC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZygnYm9ycmFyJyk7XG4gICAgICAgICAgICAgICB0aGlzXy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsMCxpdGVtLnZhcmlhbnRfaWQsZWxlbWVudCwwLDAsMCwwLDAsMCwnZGVsZXRlJywwLCcnLDAsJ2RlbGV0ZScsJ2RlbGV0ZWxvdCcpO1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy5jYXJ0U2VydmljZS5sb2FkQ2FydEJ5VG9rZW4odGhpc18uY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkpO30sIDMwMCAqIHkpO1xuXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXNfLnRvYXN0clNlcnZpY2Uuc2hvdygnbG90LXNhdmVkJyk7fSwgMzAwICogeSk7XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpc18uY2FyZ2FuZG8gPSBmYWxzZX0sIDMwMCAqIHkpO1xuXG4gICAgICAgICAgfSBlbHNle1xuICAgICAgICAgICAgICAgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdMYSBjYW50aWRhZCBkZSBsb3MgbG90ZXMgZXMgc3VwZXJpb3IgYSBsYSBjYW50aWRhZCBkZWwgcHJvZHVjdG8uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnI2JvdG9uQm9ycmFyJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzKTtcbiAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgndHInKS5yZW1vdmUoKTtcblxuICAgICAgICAgIH0pO1xuXG4gICAgIH1cblxuICAgICBjbG9zZU1vZGFsKGlkKXtcbiAgICAgICAgICAkKCcjJytpZCkubW9kYWwoJ2hpZGUnKTtcbiAgICAgfVxuXG4gICAgIGNoZWNrU3RvY2soaXRlbSkge1xuICAgICAgICBmb3IgKGNvbnN0IHZhcmlhbnQgb2YgaXRlbS5wcm9kdWN0LnZhcmlhbnRzKSB7XG4gICAgICAgICAgaWYgKGl0ZW0udmFyaWFudF9pZCA9PT0gdmFyaWFudC5jb2RlKSB7XG4gICAgICAgICAgICBpZih2YXJpYW50LnN0b2NrID09PSAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0b2NrPXRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcwJztcbiAgICAgICAgICAgIH1lbHNlIGlmIChpdGVtLnF1YW50aXR5ID4gdmFyaWFudC5zdG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvY2s9dHJ1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhbnQuc3RvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gU29sbyBzZSBlamVjdXRhIHNpIG5vIHNlIGN1bXBsZSBsYSBjb25kaWNpw7NuXG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZUFsbFN0b2NrKCkge1xuICAgICAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICAgICAgXG4gICAgICAgIC8vIERlZmluZSBsYSBzdXNjcmlwY2nDs24gYW50ZXMgZGUgdXNhcmxhXG4gICAgICAgIFxuICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jYXJ0SXRlbXMuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhcmlhbnQgb2YgaXRlbS5wcm9kdWN0LnZhcmlhbnRzKSB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLnZhcmlhbnRfaWQgPT09IHZhcmlhbnQuY29kZSAmJiAhdGhpcy5leGl0VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuc3RvY2sgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuZGVsZXRlQ2FydEl0ZW0oaXRlbSwgZmFsc2UpOyAvLyBCb3JyYSBlbCBhcnTDrWN1bG9cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucXVhbnRpdHkgPiB2YXJpYW50LnN0b2NrKSB7XG4gICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdENvZGU6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHZhcmlhbnQuc3RvY2ssXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdENvZGU6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBpdGVtLnF1YW50aXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudENvZGU6IHZhcmlhbnQuY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCAmJiAhdGhpcy5leGl0VXBkYXRlKSB7XG4gICAgICAgICAgICAvLyBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgIC8vIERlc3VzY3LDrWJldGUgYW50ZXMgZGUgYWN0dWFsaXphclxuICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRBbGxUb0NhcnQoaXRlbXMpOyAgLy8gQWN0dWFsaXphIGVsIGNhcnJpdG9cbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvY2s9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5leGl0VXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIHRoaXMudXBkYXRlQWxsU3RvY2soKTsgIC8vIFZ1ZWx2ZSBhIHZlcmlmaWNhciBlbCBzdG9ja1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIFxuXG4gICAgZ2V0VmFyaWFudHMgPSBwcm9kdWN0ID0+IHtcblxuICAgICAgICBsZXQgaXRlbSA9IHByb2R1Y3QucHJvZHVjdFxuXG4gICAgICAgIGlmIChpdGVtLnZhcmlhbnRzICYmIGl0ZW0udmFyaWFudHMubGVuZ3RoICYmIGl0ZW0udmFyaWFudHNbMF0ub3B0aW9ucyAmJiBpdGVtLnZhcmlhbnRzWzBdLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBpdGVtLnZhcmlhbnRzWzBdLm9wdGlvbnNcbiAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHRoaXMudmFyaWFudHNUb1Nob3cuZmluZChuYW1lID0+IG9wdGlvbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpXG4gICAgICAgICAgICAgbGV0IG9wdGlvbnNNYXAgPSBbXVxuICAgICAgICAgICAgIG9wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25BZGRlZCA9IGZhbHNlOyAgLy8gVmFyaWFibGUgcGFyYSBldml0YXIgbcO6bHRpcGxlcyBpbnNlcmNpb25lc1xuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zLmZvckVhY2gob3B0aW9uMiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbjIuY29kZSA9PSAnQ09MT1InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjIudmFsdWVzLmZvckVhY2goY29sb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yLmNvZGUgPT0gb3B0aW9uW2VudHJ5XSAmJiAhb3B0aW9uQWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zTWFwLnB1c2goeyBuYW1lOiBlbnRyeSwgdmFsdWU6IG9wdGlvbltlbnRyeV0sIGltYWdlOiBjb2xvci5pbWFnZSwgbW9iaWxlSW1hZ2U6IGNvbG9yLm1vYmlsZUltYWdlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkFkZGVkID0gdHJ1ZTsgLy8gTWFyY2FyIG9wY2nDs24gYWdyZWdhZGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgIC8vIFNpIG5vIHNlIGHDsWFkacOzIGxhIG9wY2nDs24gZGUgQ09MT1IsIG1hbmVqYXIgb3RyYXMgb3BjaW9uZXNcbiAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbkFkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zLmZvckVhY2gob3B0aW9uMiA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbjIuY29kZSAhPT0gJ0NPTE9SJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc01hcC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uW2VudHJ5XVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkFkZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNNYXA7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNNYXA7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgIH1cblxuICAgY3JlYXRlRGlzY291bnRNZXNzYWdlKHNhbGVwcmljZTogbnVtYmVyLCBwcmljZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoaXNOYU4oc2FsZXByaWNlKSB8fCBpc05hTihwcmljZSkgfHwgc2FsZXByaWNlID49IHByaWNlIHx8IHNhbGVwcmljZSA8PSAwIHx8IHByaWNlIDw9IDApIHtcbiAgICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBsZXQgZGlzY291bnRQZXJjZW50YWdlID0gTWF0aC5yb3VuZCgoKHByaWNlIC0gc2FsZXByaWNlKSAvIHByaWNlKSAqIDEwMCk7XG5cbiAgICBsZXQgZGlzY291bnRNZXNzYWdlID0gYCR7ZGlzY291bnRQZXJjZW50YWdlfSUgT0ZGYDtcbiAgICByZXR1cm4gZGlzY291bnRNZXNzYWdlO1xufVxuZ2V0TWluaW11bVB1cmNoYXNlQW1vdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNoYW5uZWwudHlwZSA9PSAnYjJiJyA/IHRoaXMuY2hhbm5lbC53aG9sZXNhbGVyTWluaW11bVB1cmNoYXNlQW1vdW50IDogdGhpcy5jaGFubmVsLnJldGFpbGVyTWluaW11bVB1cmNoYXNlQW1vdW50XG5cbn1cblxuZXhjZWVkc01pbmltdW1BbW91bnQgPSAodmFsdWU6IG51bWJlcikgPT4gdmFsdWUgPj0gdGhpcy5nZXRNaW5pbXVtUHVyY2hhc2VBbW91bnQoKSA/IHRoaXMucmVkaXJlY3RDaGVja291dCgpIDogdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3F1YW50aXR5LW5vdC1leGNlZWRlZCcsIHsgYW1vdW50OiB0aGlzLmdldE1pbmltdW1QdXJjaGFzZUFtb3VudCgpIH0pXG5cblxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cbiJdfQ==
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NhcnQtZWMvY2FydC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBOEIsTUFBTSxlQUFlLENBQUE7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQVM3RTtJQUFxQyxtQ0FBZTtJQW1CaEQseUJBQ1csV0FBd0IsRUFDeEIsV0FBd0IsRUFDckIsTUFBaUIsRUFDcEIsZUFBZ0MsRUFDaEMsTUFBYyxFQUNkLFlBQTRCLEVBQ3pCLGFBQTJCLEVBQzlCLGlCQUFvQyxFQUNwQyxvQkFBMEM7UUFUckQsWUFVSSxpQkFBTyxTQUtWO1FBZFUsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVcsR0FB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bkQ7U0E1WlksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL21vZGFsXCI7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbC9icy1tb2RhbC1yZWYuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY29yZS5jb25zdHNcIjtcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzL3Byb2R1Y3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlclwiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2VcIjtcbmltcG9ydCB7IGludGVydmFsLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEFkZHJlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hlY2tvdXQvYWRkcmVzc2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYXJ0LWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FydC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FydC1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhcnRFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblxuICAgIHB1YmxpYyB2YXJpYW50c1RvU2hvdzogc3RyaW5nW10gPSBbJ1RBTExFJywgJ0NPTE9SJ107XG4gICAgcHVibGljIGlzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgbWVkaWFVcmwgPSAnJztcbiAgICBwdWJsaWMgbW9kYWxSZWY6IEJzTW9kYWxSZWYgfCBudWxsO1xuICAgIHB1YmxpYyBwcm9tb3Rpb25zID0gW107XG4gICAgcHVibGljIGl0ZW1zOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcHJpdmF0ZSBjYXJnYW5kbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBjaGFubmVsOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgdXBkYXRlU3RvY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgZXhpdFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaGlkZURpc2NvdW50czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBoaWRlVGF4ZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHVibGljIHByb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYWRkcmVzc2luZ1NlcnZpY2U6IEFkZHJlc3NpbmdTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY2hhbm5lbENvbmZpZ1NlcnZpY2U6IENoYW5uZWxDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCk7XG4gICAgICAgIHRoaXMubWVkaWFVcmwgPSB0aGlzLmNvbnN0cy5tZWRpYVVybCgpO1xuXG4gICAgfVxuXG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5pc0xvZ2dlZEluID0gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVMb2dnZWRJbigpIHtcbiAgICAgICAgdGhpcy5pc0xvZ2dlZEluID0gdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbCgwLCAwKTtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5wcm9tb3Rpb25zLnN1YnNjcmliZShwcm9tb3Rpb25zID0+IHRoaXMucHJvbW90aW9ucyA9IHByb21vdGlvbnMpO1xuICAgICAgICAvLyAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRTZXJ2aWNlLmdldFRheGVzKCkpO1xuXG4gICAgICAgIHRoaXMuY2hhbm5lbENvbmZpZ1NlcnZpY2UuY2hhbm5lbENvbmZpZyQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlUHJpY2VzID0gY2hhbm5lbD8uaGlkZVByaWNlcyA/PyBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaGlkZURpc2NvdW50cyA9IGNoYW5uZWw/LmhpZGVEaXNjb3VudHMgPz8gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmhpZGVUYXhlcyA9IGNoYW5uZWw/LmhpZGVUYXhlcyA/PyBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaGlkZVByaWNlcykge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgfVxuXG4gICAgdG9EZWNpbWFsID0gKGFtb3VudCkgPT4gdGhpcy5jb25zdHMudG9EZWNpbWFsKGFtb3VudCk7XG5cbiAgICBhY3R1YWxpemFyQ2FudGlkYWQgPSAoaXRlbSwgY2FudGlkYWQsIHN0b2NrLCBpZD8pID0+IHtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0cnVlOyAvLyBBY3R1YWxpemEgbGEgcHJvcGllZGFkIHZpbmN1bGFkYSBhIGBbZGlzYWJsZWRdYFxuICAgICAgICAgICAgaWYgKGNhbnRpZGFkID4gMCAmJiBjYW50aWRhZCA8PSBzdG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UudXBkYXRlSXRlbVF1YW50aXR5KGl0ZW0sIGNhbnRpZGFkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgLy8gRnVuY2nDs24gZGUgZmxlY2hhIHBhcmEgcHJlc2VydmFyIGVsIGNvbnRleHRvXG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW50aWRhZCA+IDAgJiYgY2FudGlkYWQgPD0gc3RvY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eShpdGVtLCBjYW50aWRhZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cblxuICAgIHJlZGlyZWN0Q2hlY2tvdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhc1N1ZmZpY2llbnRDcmVkaXRzRm9yQ2FydFRvdGFsKCkpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9jaGVja291dGApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJObyBzZSBwdWVkZSByZWRpcmlnaXIgYWwgY2hlY2tvdXQgZGViaWRvIGEgdW5hIHZhbGlkYWNpw7NuIGZhbGxpZGEuXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVkaXJlY3RSZWdpc3RlciA9ICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9hdXRoL2xvZ2luYClcblxuICAgIG9wZW5Nb2RhbCh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyh0ZW1wbGF0ZSwgeyBjbGFzczogJ21vZGFsLXhsJywga2V5Ym9hcmQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHJlZGlyZWN0RGV0YWlsUHJvZHVjdChwcm9kdWN0KSB7XG4gICAgICAgIGxldCB2YXJpYW50ID0gcHJvZHVjdC52YXJpYW50c1swXVxuICAgICAgICBsZXQgcGF0aCA9ICcvcHJvZHVjdC8nXG4gICAgICAgIHBhdGggKz0gdmFyaWFudC5jb2RlXG4gICAgICAgIHBhdGggKz0gdmFyaWFudC5vcHRpb25zLmxlbmd0aCA/IFwiP3ZhcmlhbnQ9dHJ1ZVwiIDogXCJcIlxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHBhdGgpXG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgIHZhciBkID0gbmV3IERhdGUoZGF0ZSksXG4gICAgICAgICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxuICAgICAgICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcbiAgICAgICAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgICAgaWYgKG1vbnRoLmxlbmd0aCA8IDIpXG4gICAgICAgICAgICBtb250aCA9ICcwJyArIG1vbnRoO1xuICAgICAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpXG4gICAgICAgICAgICBkYXkgPSAnMCcgKyBkYXk7XG5cbiAgICAgICAgcmV0dXJuIFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FyZ2FNb2RhbChpdGVtKSB7XG5cbiAgICAgICAgLy8gT2J0aWVuZSBsYXMgc2VkZXMgZGVsIGNsaWVudGVcbiAgICAgICAgY29uc3Qgc2VkZXMgPSBhd2FpdCB0aGlzLmNhcnRTZXJ2aWNlLmdldEFkZHJlc3NCb29rKCk7XG5cbiAgICAgICAgLy8gQ3JlbyB1bmEgc2VyaWUgZGUgdmFyaWFibGVzIHF1ZSB2b3kgYSBuZWNlc2l0YXIsIGlkIHBhcmEgY29udHJvbGFyIGxhcyB2dWVsdGFzIHF1ZSBkYSB5IGN1YW50YXMgbGluZWFzIGhheSB5IGFsbElEIHBhcmEgYWxtYWNlbmFyIGxvcyBJRCBkZSBsb3MgbG90ZXMuXG4gICAgICAgIHZhciBpZCA9IDE7XG4gICAgICAgIHZhciB0aGlzXyA9IHRoaXM7XG4gICAgICAgIHZhciBhbGxJRCA9IFtdO1xuXG4gICAgICAgIC8vIEHDsWFkZSBsb3MgZGF0b3MgYWwgZW5jYWJlemFkbyBkZWwgTW9kYWxcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuY2FiZXphZG9Nb2RhbCcpLmlubmVySFRNTCA9ICc8YSBjbGFzcz1cInRpdGxlIHRleHQtZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZSBoNSBkLWJsb2NrIG0tMCBwLTAgbS0wIHAtMFwiPjxwIGNsYXNzPVwibm9tYnJlIG1iLTBcIiBpZD1cInByb2R1Y3ROYW1lXCI+JyArIGl0ZW1bJ3Byb2R1Y3QnXVsnbmFtZSddICsgJzwvcD48c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBwcy0yIG1zLTFcIiBpZD1cInByb2R1Y3RSZWZcIj5SZWY6JyArIGl0ZW1bJ3ZhcmlhbnRfaWQnXSArICc8L3NtYWxsPjwvYT4nO1xuXG4gICAgICAgIC8vIEJvcnJhbW9zIHRvZG9zIGxvcyBkYXRvcyBkZSBsb3MgbG90ZXMgYW50ZXJpb3Jlc1xuICAgICAgICB2YXIgYm9keVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsb3RfYm9keV90YWJsZVwiKSBhcyBIVE1MVGFibGVFbGVtZW50O1xuICAgICAgICBib2R5VGFibGUuaW5uZXJIVE1MID0gJyc7XG5cbiAgICAgICAgLy8gUmVjb3JyZSB0b2RvcyBsb3MgYXJ0aWN1bG9zIHkgZW5jdWVudHJhIHNpIHRpZW5lbiBsb3RlcyBvIG5vLCBzaSB0aWVuZSBjcmVhIGxhcyBsaW5lYXNcbiAgICAgICAgdGhpc18uY2FydFNlcnZpY2UuZ2V0Q2FydDIoKS5mb3JFYWNoKGkgPT4ge1xuXG4gICAgICAgICAgICBpZiAoaVsnaXRlbV9pZCddID09IGl0ZW0uaXRlbV9pZCAmJiBpWydsb3QnXSAhPSAnJykge1xuICAgICAgICAgICAgICAgIGJvZHlUYWJsZS5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICBpWydsb3QnXS5mb3JFYWNoKGxvdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjZWxsMSA9IHJvdy5pbnNlcnRDZWxsKDApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbDIgPSByb3cuaW5zZXJ0Q2VsbCgxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwzID0gcm93Lmluc2VydENlbGwoMik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjZWxsNCA9IHJvdy5pbnNlcnRDZWxsKDMpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbDUgPSByb3cuaW5zZXJ0Q2VsbCg0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGw2ID0gcm93Lmluc2VydENlbGwoNSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShsb3RbJ2RhdGVfcmVxdWVzdCddKSk7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwxLmlubmVySFRNTCA9ICc8aW5wdXQgaWQ9XCJpZCcgKyBpZCArICdcIiAgc3R5bGU9XCJib3JkZXI6IDA7XCIgdmFsdWU9XCInICsgbG90LmlkICsgJ1wiIGRpc2FibGVkPic7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwyLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cIm51bWJlclwiIGlkPVwicXVhbnRpdHknICsgaWQgKyAnXCIgdmFsdWU9IFwiJyArIGxvdC5xdWFudGl0eSArICdcImNsYXNzPVwiZm9ybS1jb250cm9sIHctNTBcIiBtYXg9XCInICsgbG90LnF1YW50aXR5ICsgJ1wiPic7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwzLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImRhdGVcIiB2YWx1ZT1cIicgKyB0aGlzLmZvcm1hdERhdGUoZGF0ZSkgKyAnXCIgaWQ9XCJkZWxpdmVyeURhdGUnICsgaWQgKyAnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPic7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcGNpb25lcyA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgc2VkZXMuZm9yRWFjaChzZWRlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWRlLmlkID09IGxvdC5zaGlwcGluZ19hZGRyZXNzX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMgKz0gJzxvcHRpb24gdmFsdWU9XCInICsgc2VkZS5pZCArICdcIiBzZWxlY3RlZD4nICsgc2VkZS5jaXR5ICsgJyAtICcgKyBzZWRlLnN0cmVldCArICc8L29wdGlvbj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMgKz0gJzxvcHRpb24gdmFsdWU9XCInICsgc2VkZS5pZCArICdcIj4nICsgc2VkZS5jaXR5ICsgJyAtICcgKyBzZWRlLnN0cmVldCArICc8L29wdGlvbj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY2VsbDQuaW5uZXJIVE1MID0gJzxzZWxlY3QgIGlkPVwic2hpcHBpbmdBZGRyZXNzJyArIGlkICsgJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sIHctNzVcIj4nICsgb3BjaW9uZXMgKyAnPC9zZWxlY3Q+JztcbiAgICAgICAgICAgICAgICAgICAgY2VsbDUuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuU2VndWlyXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLWJzLXRhcmdldD1cIiNjb2xsYXBzZUV4YW1wbGUnICsgaWQgKyAnXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1jb250cm9scz1cImNvbGxhcHNlRXhhbXBsZScgKyBpZCArICdcIiB2YWx1ZT1cIlZlclwiPjwvaW5wdXQ+JztcbiAgICAgICAgICAgICAgICAgICAgY2VsbDYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJjb2wtMSBmbGV4LWdyb3ctMCB0ZXh0LXJpZ2h0IGJ0bkJvcnJhciBkLW5vbmUgZC1tZC1ibG9jayBkLW5vbmUgZC1tZC1ibG9ja1wiPjxidXR0b24gdmFsdWU9XCInICsgbG90LmlkICsgJ1wiIGNsYXNzPVwiYnRuXCIgaWQ9XCJib3RvbkJvcnJhclwiPjxpbWcgc3JjPVwiLi9hc3NldHMvbWFxdWV0YWRvL2ltZy9pYy1ib3JyYXIuc3ZnXCIgYWx0PVwiXCI+IDwvYnV0dG9uPjwvZGl2Pic7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cyID0gYm9keVRhYmxlLmluc2VydFJvdyhib2R5VGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsYTIgPSByb3cyLmluc2VydENlbGwoMClcbiAgICAgICAgICAgICAgICAgICAgZmlsYTIuY29sU3BhbiA9IDY7XG4gICAgICAgICAgICAgICAgICAgIGZpbGEyLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiY29sbGFwc2VcIiBpZD1cImNvbGxhcHNlRXhhbXBsZScgKyBpZCArICdcIj48aW5wdXQgaWQ9XCJub3RlcycgKyBpZCArICdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHZhbHVlPVwiJyArIGxvdC5ub3RlcyArICdcIiBwbGFjZWhvbGRlcj1cIkluZ3Jlc2UgdW4gY29tZW50YXJpbyBlbiBjYXNvIGRlIHF1ZSBzZWEgbmVjZXNhcmlvLlwiIHR5cGU9XCJ0ZXh0XCIvPjwvZGl2Pic7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gaWQgKyAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbElELnB1c2gobG90WydpZCddKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdG9uQWdyZWdhcicpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIC8vIC8vIFNlIGNhbGN1bGEgbGEgY2FudGlkYWQgeSBlbCBjb250YWRvciBwYXJhIHF1ZSBubyBleGNlZGEgbGEgY2FudGlkYWQgZGUgbGEgbGluZWEgYWwgY3JlYXIgdW4gbnVldm8gbG90ZS5cbiAgICAgICAgICAgIHZhciBjYW50aWRhZEFjdHVhbCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgaWQ7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBpZiAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiICsgaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbnRpZGFkQWN0dWFsID0gY2FudGlkYWRBY3R1YWwgKyBwYXJzZUludCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiICsgaW5kZXgpKS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZSBhw7FhZGUgbGEgbGluZWEgc2llbXByZSB5IGN1YW5kbyBsYSBjYW50aWRhZCByZXN0YW50ZSBubyBzZWEgY2Vyby5cbiAgICAgICAgICAgIGlmIChjYW50aWRhZEFjdHVhbCA8IGl0ZW1bJ3F1YW50aXR5J10pIHtcbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gYm9keVRhYmxlLmluc2VydFJvdyhib2R5VGFibGUucm93cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHZhciBjZWxsMSA9IHJvdy5pbnNlcnRDZWxsKDApO1xuICAgICAgICAgICAgICAgIHZhciBjZWxsMiA9IHJvdy5pbnNlcnRDZWxsKDEpO1xuICAgICAgICAgICAgICAgIHZhciBjZWxsMyA9IHJvdy5pbnNlcnRDZWxsKDIpO1xuICAgICAgICAgICAgICAgIHZhciBjZWxsNCA9IHJvdy5pbnNlcnRDZWxsKDMpO1xuICAgICAgICAgICAgICAgIHZhciBjZWxsNSA9IHJvdy5pbnNlcnRDZWxsKDQpO1xuICAgICAgICAgICAgICAgIHZhciBjZWxsNiA9IHJvdy5pbnNlcnRDZWxsKDUpO1xuICAgICAgICAgICAgICAgIGNlbGwxLmlubmVySFRNTCA9ICc8aW5wdXQgaWQ9XCJpZCcgKyBpZCArICdcIiAgc3R5bGU9XCJib3JkZXI6IDA7XCIgdmFsdWU9XCJQZW5kdC5cIiBkaXNhYmxlZD4nO1xuICAgICAgICAgICAgICAgIGNlbGwyLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cIm51bWJlclwiIGlkPVwicXVhbnRpdHknICsgaWQgKyAnXCIgdmFsdWU9IFwiJyArIChpdGVtWydxdWFudGl0eSddIC0gY2FudGlkYWRBY3R1YWwpICsgJ1wiY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy01MFwiIG1heD1cIicgKyAoaXRlbVsncXVhbnRpdHknXSAtIGNhbnRpZGFkQWN0dWFsKSArICdcIj4nO1xuICAgICAgICAgICAgICAgIGNlbGwzLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImRhdGVcIiBpZD1cImRlbGl2ZXJ5RGF0ZScgKyBpZCArICdcIiBjbGFzcz1cImZvcm0tY29udHJvbCB3LTc1XCI+JztcbiAgICAgICAgICAgICAgICB2YXIgb3BjaW9uZXMgPSBcIlwiXG4gICAgICAgICAgICAgICAgc2VkZXMuZm9yRWFjaChzZWRlID0+IHsgb3BjaW9uZXMgKz0gJzxvcHRpb24gdmFsdWU9XCInICsgc2VkZS5pZCArICdcIj4nICsgc2VkZS5jaXR5ICsgJyAtICcgKyBzZWRlLnN0cmVldCArICc8L29wdGlvbj4nOyB9KTtcbiAgICAgICAgICAgICAgICBjZWxsNC5pbm5lckhUTUwgPSAnPHNlbGVjdCAgaWQ9XCJzaGlwcGluZ0FkZHJlc3MnICsgaWQgKyAnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPicgKyBvcGNpb25lcyArICc8L3NlbGVjdD4nO1xuICAgICAgICAgICAgICAgIGNlbGw1LmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0blNlZ3VpclwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VFeGFtcGxlJyArIGlkICsgJ1wiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUV4YW1wbGUnICsgaWQgKyAnXCIgdmFsdWU9XCJWZXJcIj48L2lucHV0Pic7XG4gICAgICAgICAgICAgICAgY2VsbDYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJjb2wtMSBmbGV4LWdyb3ctMCB0ZXh0LXJpZ2h0IGJ0bkJvcnJhciBkLW5vbmUgZC1tZC1ibG9jayBkLW5vbmUgZC1tZC1ibG9ja1wiPjxidXR0b24gY2xhc3M9XCJidG5cIiBpZD1cImJvdG9uQm9ycmFyXCI+PGltZyBzcmM9XCIuL2Fzc2V0cy9tYXF1ZXRhZG8vaW1nL2ljLWJvcnJhci5zdmdcIiBhbHQ9XCJcIj4gPC9idXR0PjwvZGl2Pic7XG4gICAgICAgICAgICAgICAgdmFyIHJvdzIgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdmFyIGZpbGEyID0gcm93Mi5pbnNlcnRDZWxsKDApXG4gICAgICAgICAgICAgICAgZmlsYTIuY29sU3BhbiA9IDY7XG4gICAgICAgICAgICAgICAgZmlsYTIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJjb2xsYXBzZVwiIGlkPVwiY29sbGFwc2VFeGFtcGxlJyArIGlkICsgJ1wiPjxpbnB1dCBpZD1cIm5vdGVzJyArIGlkICsgJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHVuIGNvbWVudGFyaW8gZW4gY2FzbyBkZSBxdWUgc2VhIG5lY2VzYXJpby5cIiB0eXBlPVwidGV4dFwiLz48L2Rpdj4nO1xuXG5cbiAgICAgICAgICAgICAgICBpZCA9IGlkICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdsb3QtbWF4LXF1YW50aXR5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdWFuZG8gc2UgcHVsc2EgZWwgYm90b24gcGFyYSBndWFyZGFyIGVsIGxvdGUgcmVjb3JyZSBsYSBmdW5jaW9uIHkgZWwgZm9yICwgcmVjb3JyZSBsaW5lYSBhIGxpbmVhIHkgbGFuemEgZWwgZW5kcG9pbnQgY29uIHVuYSBwYXVzYSBwYXJhIHF1ZSBubyBzZSBwaWVyZGEgbmluZ3VubyB5IG5vIHNlIHF1ZWRlIHBpbGxhZG8uXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3Rvbkd1YXJkYXInKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdsb3Qtc2F2aW5nJyk7XG4gICAgICAgICAgICB0aGlzXy5jYXJnYW5kbyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgbG90SUQgPSAnJztcbiAgICAgICAgICAgIHZhciBjYW50aWRhZExvdGVzID0gMDtcbiAgICAgICAgICAgIC8vQ29udHJvbGEgcXVlIGxhcyBjYW50aWRhZGVzIGRlIGxvcyBsb3RlcyBubyBzZWEgc3VwZXJpb3IgYSBsYSBkZWwgcHJvZHVjdG8gZW4gZWwgY2Fycml0by5cbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpZDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGlmICg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1YW50aXR5XCIgKyBpbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FudGlkYWRMb3RlcyA9IGNhbnRpZGFkTG90ZXMgKyBwYXJzZUludCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiICsgaW5kZXgpKS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS5xdWFudGl0eSA+PSBjYW50aWRhZExvdGVzKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coY2FudGlkYWRMb3Rlcyk7XG4gICAgICAgICAgICAgICAgdmFyIHkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpZDsgaW5kZXgrKykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiICsgaW5kZXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHF1YW50aXR5ID0gcGFyc2VJbnQoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIiArIGluZGV4KSkudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGl2ZXJ5RGF0ZSA9ICg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGl2ZXJ5RGF0ZVwiICsgaW5kZXgpKS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaGlwcGluZ0FkZHJlc3MgPSAkKFwiI3NoaXBwaW5nQWRkcmVzc1wiICsgaW5kZXgpLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vdGVzID0gJChcIiNub3Rlc1wiICsgaW5kZXgpLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNoaXBwaW5nQWRkcmVzc05hbWUgPSAkKCcjc2hpcHBpbmdBZGRyZXNzJyArIGluZGV4ICsgJyBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlkXCIgKyBpbmRleCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb3RJRCA9ICg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlkXCIgKyBpbmRleCkpLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG15SW5kZXggPSBhbGxJRC5pbmRleE9mKHBhcnNlSW50KGxvdElEKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxJRC5zcGxpY2UobXlJbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobG90SUQgPT0gJ1BlbmR0LicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdudWV2bycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc18uY2FydFNlcnZpY2UuYWRkVG9Mb3QoaXRlbS5wcm9kdWN0LCAwLCBpdGVtLnZhcmlhbnRfaWQsIDAsIGl0ZW0uaXRlbV9pZCwgcXVhbnRpdHksIGl0ZW0ucHJvZHVjdC5wcmljZSwgaXRlbS5xdWFudGl0eSwgaXRlbS5kaXNjb3VudCwgaXRlbS5wcm9kdWN0LnByaWNlICogcXVhbnRpdHksICduZXcnLCBkZWxpdmVyeURhdGUsIG5vdGVzLCBwYXJzZUludChzaGlwcGluZ0FkZHJlc3MpLCBzaGlwcGluZ0FkZHJlc3NOYW1lLCAnbmV3bG90Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb3RJRCAhPSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobG90SUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpc18uY2FydFNlcnZpY2UuYWRkVG9Mb3QoaXRlbS5wcm9kdWN0LCAwLCBpdGVtLnZhcmlhbnRfaWQsIHBhcnNlSW50KGxvdElEKSwgaXRlbS5pdGVtX2lkLCBxdWFudGl0eSwgaXRlbS5wcm9kdWN0LnByaWNlLCBpdGVtLnF1YW50aXR5LCBpdGVtLmRpc2NvdW50LCBpdGVtLnByb2R1Y3QucHJpY2UgKiBxdWFudGl0eSwgJ2VkaXRlZCcsIGRlbGl2ZXJ5RGF0ZSwgbm90ZXMsIHBhcnNlSW50KHNoaXBwaW5nQWRkcmVzcyksIHNoaXBwaW5nQWRkcmVzc05hbWUsICdlZGl0bG90Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeSA9IGluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbGxJRC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdib3JyYXInKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc18uY2FydFNlcnZpY2UuYWRkVG9Mb3QoaXRlbS5wcm9kdWN0LCAwLCBpdGVtLnZhcmlhbnRfaWQsIGVsZW1lbnQsIDAsIDAsIDAsIDAsIDAsIDAsICdkZWxldGUnLCAwLCAnJywgMCwgJ2RlbGV0ZScsICdkZWxldGVsb3QnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdGhpc18uY2FydFNlcnZpY2UubG9hZENhcnRCeVRva2VuKHRoaXNfLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpKTsgfSwgMzAwICogeSk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdsb3Qtc2F2ZWQnKTsgfSwgMzAwICogeSk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdGhpc18uY2FyZ2FuZG8gPSBmYWxzZSB9LCAzMDAgKiB5KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ0xhIGNhbnRpZGFkIGRlIGxvcyBsb3RlcyBlcyBzdXBlcmlvciBhIGxhIGNhbnRpZGFkIGRlbCBwcm9kdWN0by4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnI2JvdG9uQm9ycmFyJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcyk7XG4gICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykucmVtb3ZlKCk7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBjbG9zZU1vZGFsKGlkKSB7XG4gICAgICAgICQoJyMnICsgaWQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfVxuXG4gICAgY2hlY2tTdG9jayhpdGVtKSB7XG4gICAgICAgIGZvciAoY29uc3QgdmFyaWFudCBvZiBpdGVtLnByb2R1Y3QudmFyaWFudHMpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLnZhcmlhbnRfaWQgPT09IHZhcmlhbnQuY29kZSkge1xuICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LnN0b2NrID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzAnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5xdWFudGl0eSA+IHZhcmlhbnQuc3RvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdG9jayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50LnN0b2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFNvbG8gc2UgZWplY3V0YSBzaSBubyBzZSBjdW1wbGUgbGEgY29uZGljacOzblxuICAgIH1cblxuICAgIHVwZGF0ZUFsbFN0b2NrKCkge1xuICAgICAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcblxuICAgICAgICAvLyBEZWZpbmUgbGEgc3VzY3JpcGNpw7NuIGFudGVzIGRlIHVzYXJsYVxuXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2FydEl0ZW1zLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YXJpYW50IG9mIGl0ZW0ucHJvZHVjdC52YXJpYW50cykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS52YXJpYW50X2lkID09PSB2YXJpYW50LmNvZGUgJiYgIXRoaXMuZXhpdFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuc3RvY2sgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmRlbGV0ZUNhcnRJdGVtKGl0ZW0sIGZhbHNlKTsgLy8gQm9ycmEgZWwgYXJ0w61jdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucXVhbnRpdHkgPiB2YXJpYW50LnN0b2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RDb2RlOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiB2YXJpYW50LnN0b2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50Q29kZTogdmFyaWFudC5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdENvZGU6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwICYmICF0aGlzLmV4aXRVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgIC8vIERlc3VzY3LDrWJldGUgYW50ZXMgZGUgYWN0dWFsaXphclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkQWxsVG9DYXJ0KGl0ZW1zKTsgIC8vIEFjdHVhbGl6YSBlbCBjYXJyaXRvXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdG9jayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhpdFVwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy51cGRhdGVBbGxTdG9jaygpOyAgLy8gVnVlbHZlIGEgdmVyaWZpY2FyIGVsIHN0b2NrXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICBnZXRWYXJpYW50cyA9IHByb2R1Y3QgPT4ge1xuXG4gICAgICAgIGxldCBpdGVtID0gcHJvZHVjdC5wcm9kdWN0XG5cbiAgICAgICAgaWYgKGl0ZW0udmFyaWFudHMgJiYgaXRlbS52YXJpYW50cy5sZW5ndGggJiYgaXRlbS52YXJpYW50c1swXS5vcHRpb25zICYmIGl0ZW0udmFyaWFudHNbMF0ub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gaXRlbS52YXJpYW50c1swXS5vcHRpb25zXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHRoaXMudmFyaWFudHNUb1Nob3cuZmluZChuYW1lID0+IG9wdGlvbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpXG4gICAgICAgICAgICBsZXQgb3B0aW9uc01hcCA9IFtdXG4gICAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbkFkZGVkID0gZmFsc2U7ICAvLyBWYXJpYWJsZSBwYXJhIGV2aXRhciBtw7psdGlwbGVzIGluc2VyY2lvbmVzXG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zLmZvckVhY2gob3B0aW9uMiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uMi5jb2RlID09ICdDT0xPUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24yLnZhbHVlcy5mb3JFYWNoKGNvbG9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yLmNvZGUgPT0gb3B0aW9uW2VudHJ5XSAmJiAhb3B0aW9uQWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAucHVzaCh7IG5hbWU6IGVudHJ5LCB2YWx1ZTogb3B0aW9uW2VudHJ5XSwgaW1hZ2U6IGNvbG9yLmltYWdlLCBtb2JpbGVJbWFnZTogY29sb3IubW9iaWxlSW1hZ2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25BZGRlZCA9IHRydWU7IC8vIE1hcmNhciBvcGNpw7NuIGFncmVnYWRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIG5vIHNlIGHDsWFkacOzIGxhIG9wY2nDs24gZGUgQ09MT1IsIG1hbmVqYXIgb3RyYXMgb3BjaW9uZXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25BZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zLmZvckVhY2gob3B0aW9uMiA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uMi5jb2RlICE9PSAnQ09MT1InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25bZW50cnldXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkFkZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zTWFwO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zTWFwO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBjcmVhdGVEaXNjb3VudE1lc3NhZ2Uoc2FsZXByaWNlOiBudW1iZXIsIHByaWNlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaXNOYU4oc2FsZXByaWNlKSB8fCBpc05hTihwcmljZSkgfHwgc2FsZXByaWNlID49IHByaWNlIHx8IHNhbGVwcmljZSA8PSAwIHx8IHByaWNlIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkaXNjb3VudFBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKCgocHJpY2UgLSBzYWxlcHJpY2UpIC8gcHJpY2UpICogMTAwKTtcblxuICAgICAgICBsZXQgZGlzY291bnRNZXNzYWdlID0gYCR7ZGlzY291bnRQZXJjZW50YWdlfSUgT0ZGYDtcbiAgICAgICAgcmV0dXJuIGRpc2NvdW50TWVzc2FnZTtcbiAgICB9XG4gICAgZ2V0TWluaW11bVB1cmNoYXNlQW1vdW50ID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsLnR5cGUgPT0gJ2IyYicgPyB0aGlzLmNoYW5uZWwud2hvbGVzYWxlck1pbmltdW1QdXJjaGFzZUFtb3VudCA6IHRoaXMuY2hhbm5lbC5yZXRhaWxlck1pbmltdW1QdXJjaGFzZUFtb3VudFxuXG4gICAgfVxuXG4gICAgZXhjZWVkc01pbmltdW1BbW91bnQgPSAodmFsdWU6IG51bWJlcikgPT4gdmFsdWUgPj0gdGhpcy5nZXRNaW5pbXVtUHVyY2hhc2VBbW91bnQoKSA/IHRoaXMucmVkaXJlY3RDaGVja291dCgpIDogdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3F1YW50aXR5LW5vdC1leGNlZWRlZCcsIHsgYW1vdW50OiB0aGlzLmdldE1pbmltdW1QdXJjaGFzZUFtb3VudCgpIH0pXG5cblxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cbiJdfQ==
|
|
@@ -42,6 +42,7 @@ var CheckoutEcComponent = /** @class */ (function (_super) {
|
|
|
42
42
|
_this.canCheckout = false;
|
|
43
43
|
_this.require_login = false;
|
|
44
44
|
_this.steps = [];
|
|
45
|
+
_this.hidePrices = false;
|
|
45
46
|
_this.loading$ = _this.loadingSubject.asObservable();
|
|
46
47
|
_this.initializeCheckout = function () {
|
|
47
48
|
var _a, _b, _c, _d;
|
|
@@ -120,8 +121,13 @@ var CheckoutEcComponent = /** @class */ (function (_super) {
|
|
|
120
121
|
}
|
|
121
122
|
};
|
|
122
123
|
_this.channelService.channelConfig$.subscribe(function (res) {
|
|
124
|
+
var _a, _b;
|
|
123
125
|
_this.channel = res;
|
|
124
126
|
_this.initializeSteps();
|
|
127
|
+
_this.hidePrices = (_b = (_a = res) === null || _a === void 0 ? void 0 : _a.hidePrices, (_b !== null && _b !== void 0 ? _b : false));
|
|
128
|
+
if (_this.hidePrices) {
|
|
129
|
+
_this.router.navigate(['/']);
|
|
130
|
+
}
|
|
125
131
|
//console.log(this.stepEnabled(3))
|
|
126
132
|
});
|
|
127
133
|
_this.ecOnConstruct();
|
|
@@ -160,4 +166,4 @@ var CheckoutEcComponent = /** @class */ (function (_super) {
|
|
|
160
166
|
return CheckoutEcComponent;
|
|
161
167
|
}(ComponentHelper));
|
|
162
168
|
export { CheckoutEcComponent };
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9jaGVja291dC1lYy9jaGVja291dC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sT0FBTyxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBK0IsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTzdFO0lBQXlDLHVDQUFlO0lBYXBELDZCQUFtQixlQUFnQyxFQUFTLGFBQTJCLEVBQzVFLE1BQWMsRUFBUyxXQUF3QixFQUFTLGVBQWdDLEVBQ3hGLGNBQW9DO1FBRi9DLFlBR0ksaUJBQU8sU0FPVjtRQVZrQixxQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxtQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUM1RSxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxxQkFBZSxHQUFm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Q0FBa0M7UUFDdEMsQ0FBQyxDQUFDLENBQUE7UUFDRixLQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7O0lBQ3hCLENBQUM7SUFFRCxzQ0FBUSxHQUFSO1FBQUEsaUJBTUM7UUFMRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQSxhQUFhO1lBQ2pGLElBQUksYUFBYTtnQkFBRSxLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs7Z0JBQ3hDLEtBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCx5Q0FBVyxHQUFYOztRQUNJLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxHQUFFO1FBQzFCLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsV0FBVyxHQUFFO0lBQ2hDLENBQUM7O2dCQXZCbUMsZUFBZTtnQkFBd0IsWUFBWTtnQkFDcEUsTUFBTTtnQkFBc0IsV0FBVztnQkFBMEIsZUFBZTtnQkFDeEUsb0JBQW9COztJQWZ0QyxtQkFBbUI7UUFML0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixzaEhBQTJDOztTQUU5QyxDQUFDO09BQ1csbUJBQW1CLENBNkgvQjtJQUFELDBCQUFDO0NBQUEsQUE3SEQsQ0FBeUMsZUFBZSxHQTZIdkQ7U0E3SFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFN0ZXBwZXIgZnJvbSAnYnMtc3RlcHBlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0L2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdGVwSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3RlcCc7XG5pbXBvcnQgeyBDaGVja291dERhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvZHVjdHMvcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2hlY2tvdXQtZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGVja291dC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hlY2tvdXQtZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dEVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0e1xuXG4gICAgcHVibGljIHN0ZXBwZXI6IFN0ZXBwZXI7XG4gICAgcHVibGljIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBwdWJsaWMgY2FuQ2hlY2tvdXQgPSBmYWxzZTtcbiAgICBwdWJsaWMgcmVxdWlyZV9sb2dpbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBzdWJDYW46IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgc3ViUmVhZHk6IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgY2hhbm5lbDogYW55O1xuICAgIHB1YmxpYyBzdGVwczogYW55W10gPSBbXVxuXG4gICAgcHVibGljIGxvYWRpbmckID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSwgcHVibGljIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwdWJsaWMgcHJvZHVjdHNTZXJ2aWNlOiBQcm9kdWN0c1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjaGFubmVsU2VydmljZTogQ2hhbm5lbENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUocmVzID0+e1xuICAgICAgICAgICAgdGhpcy5jaGFubmVsID0gcmVzXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTdGVwcygpXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcEVuYWJsZWQoMykpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3ViQ2FuID0gdGhpcy5jaGVja291dFNlcnZpY2UuY2FuQ2hlY2tvdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNvbnRhaW5faXRlbXMgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5faXRlbXMpIHRoaXMuaW5pdGlhbGl6ZUNoZWNrb3V0KCk7XG4gICAgICAgICAgICBlbHNlIHRoaXMuY2FuQ2hlY2tvdXQgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3ViQ2FuPy51bnN1YnNjcmliZSgpXG4gICAgICAgIHRoaXMuc3ViUmVhZHk/LnVuc3Vic2NyaWJlKClcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ2hlY2tvdXQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXQgPSB0cnVlO1xuICAgICAgICBsZXQgc3RlcHM6IFN0ZXBJW10gPSBbXTtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnY2hhbm5lbCcsIHRoaXMuY2hhbm5lbClcbiAgICAgICAgc3RlcHMucHVzaCh7IG5hbWU6ICdhZGRyZXNzJyB9KTtcbiAgICAgICAgdGhpcy5jaGFubmVsPy5pc1NraXBwaW5nU2hpcHBpbmdTdGVwQWxsb3dlZCA/IG51bGwgOiBzdGVwcy5wdXNoKHsgbmFtZTogJ3NoaXBtZW50JyB9KTtcbiAgICAgICAgdGhpcy5jaGFubmVsPy5pc1NraXBwaW5nUGF5bWVudFN0ZXBBbGxvd2VkID8gbnVsbCA6IHN0ZXBzLnB1c2goeyBuYW1lOiAncGF5bWVudCcgfSk7XG4gICAgICAgIC8qIHN0ZXBzLnB1c2goeyBuYW1lOiAnc2hpcG1lbnQnIH0pO1xuICAgICAgICBzdGVwcy5wdXNoKHsgbmFtZTogJ3BheW1lbnQnIH0pOyAqL1xuICAgICAgICAvL2NvbnNvbGUubG9nKHN0ZXBzKVxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRTdGVwcyhzdGVwcyk7XG4gICAgICAgIHRoaXMuc2V0U3RlcHBlcigpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5jaGFubmVsPy5pc1NraXBwaW5nU2hpcHBpbmdTdGVwQWxsb3dlZCAhPSB0cnVlIHx8IHRoaXMuY2hhbm5lbD8uaXNTa2lwcGluZ1BheW1lbnRTdGVwQWxsb3dlZCAhPSB0cnVlKXtcbiAgICAgICAgICB0aGlzLnN1YlJlYWR5ID0gdGhpcy5jaGVja291dFNlcnZpY2Uub25SZWFkeSQucGlwZShmaWx0ZXIoIHJlYWR5ID0+IHJlYWR5ICkpLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJlcyA9PiB7IHJlcyAmJiB0aGlzLmVuZENoZWNrb3V0KCl9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgfVxuXG4gICAgZ29CYWNrID0gKCkgPT4gdGhpcy5zdGVwcGVyLnByZXZpb3VzKCk7XG5cbiAgICBpc1N0ZXBSZWFkeSA9IChzdGVwX25hbWUpID0+IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmlzU3RlcFJlYWR5KHN0ZXBfbmFtZSk7XG5cbiAgICBlbmRDaGVja291dCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuY29tcGxldGUoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHJlcy5vayAmJiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2NoZWNrb3V0L29yZGVyX3N1Y2Nlc3MnXSksXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBzZXRTdGVwcGVyID0gKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3RlcHBlcicpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBwZXIgPSBuZXcgU3RlcHBlcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3RlcHBlcicpLCB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RlcHBlcigpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcHBlcilcbiAgICB9XG5cbiAgICBuZXh0ID0gKCkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcHBlcilcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKVxuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcHBlcilcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgfSlcbiAgICB9O1xuXG4gICAgZXJyb3IgPSAoZXJyb3JfdmFsdWUpID0+IHRoaXMudG9hc3RyU2VydmljZS5zaG93KGVycm9yX3ZhbHVlKTtcblxuICAgIGdldEljb24gPSAoZGF0YV9pdGVtOiBDaGVja291dERhdGEpID0+IHtcbiAgICAgICAgc3dpdGNoIChkYXRhX2l0ZW0udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnY291cG9uJzogcmV0dXJuICdhc3NldHMvaW1hZ2VzL2NvdXBvbi5wbmcnO1xuICAgICAgICAgICAgY2FzZSAnZGlzY291bnQnOiByZXR1cm4gJ2Fzc2V0cy9pbWFnZXMvZGlzY291bnQucG5nJztcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBtZW50JzogcmV0dXJuICdhc3NldHMvaW1hZ2VzL2ljby1lbnZpby5wbmcnO1xuICAgICAgICAgICAgY2FzZSAnc3VidG90YWwnOiByZXR1cm4gJ2Fzc2V0cy9pbWFnZXMvcHJvZHVjdHMucG5nJztcbiAgICAgICAgICAgIGNhc2UgJ3RvdGFsJzogcmV0dXJuICdhc3NldHMvaW1hZ2VzL2ljby1jYXJyaXRvLnBuZyc7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ2Fzc2V0cy9pbWFnZXMvaWNvLWNhcnJpdG8ucG5nJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVTdGVwcyA9ICgpID0+IHtcbiAgICAgICAgLy9FbCBwYXNvIGRlIGVsZWdpciBkaXJlY2Npw7NuIHNpZW1wcmUgZXN0YVxuICAgICAgICB0aGlzLnN0ZXBzLnB1c2goe3N0ZXA6MSwgbGFiZWw6J2JpbGxpbmctZGV0YWlscycsIG5hbWU6J2FkZHJlc3MnfSlcbiAgICAgICAgLy9FbCBwYXNvIGRlIGVsZWdpciBtZXRvZG8gZGUgZW52aW9cbiAgICAgICAgdGhpcy5jaGFubmVsPy5pc1NraXBwaW5nU2hpcHBpbmdTdGVwQWxsb3dlZCA/IG51bGwgOiAgdGhpcy5zdGVwcy5wdXNoKHtzdGVwOjIsIGxhYmVsOidzaGlwbWVudC1tZXRob2QnLCBuYW1lOidzaGlwbWVudCcgfSlcbiAgICAgICAgLy9FbCBwYXNvIGRlIGVsZWdpciBtZXRvZG8gZGUgcGFnb1xuICAgICAgICB0aGlzLmNoYW5uZWw/LmlzU2tpcHBpbmdQYXltZW50U3RlcEFsbG93ZWQgPyBudWxsIDogdGhpcy5zdGVwcy5wdXNoKHtzdGVwOjMsIGxhYmVsOidwYXltZW50JywgbmFtZToncGF5bWVudCd9KVxuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcHMpXG4gICAgfVxuXG4gICAgc3RlcEVuYWJsZWQgPSAoc3RlcE51bWJlcjpudW1iZXIpID0+IHRoaXMuc3RlcHMuZmluZCggc3RlcCA9PiBzdGVwLnN0ZXAgPT0gc3RlcE51bWJlcikgPyB0cnVlIDogZmFsc2VcblxuICAgIGdldENsYXNzVG9TdGVwcGVyID0gKGluZGV4Om51bWJlcik6c3RyaW5nID0+IHtcbiAgICAgICAgaWYoaW5kZXggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdsaW5lYSdcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwc1tpbmRleCsxXSA/ICd0ZXh0LWNlbnRlcicgOiAndGV4dC1lbmQnXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9jaGVja291dC1lYy9jaGVja291dC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sT0FBTyxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBK0IsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTzdFO0lBQXlDLHVDQUFlO0lBY3BELDZCQUFtQixlQUFnQyxFQUFTLGFBQTJCLEVBQzVFLE1BQWMsRUFBUyxXQUF3QixFQUFTLGVBQWdDLEVBQ3hGLGNBQW9DO1FBRi9DLFlBR0ksaUJBQU8sU0FZVjtRQWZrQixxQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxtQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUM1RSxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxxQkFBZSxHQUFm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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBTdGVwcGVyIGZyb20gJ2JzLXN0ZXBwZXInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcEkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3N0ZXAnO1xuaW1wb3J0IHsgQ2hlY2tvdXREYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaGVja291dC1kYXRhJztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzL3Byb2R1Y3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNoZWNrb3V0LWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tvdXQtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoZWNrb3V0LWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgc3RlcHBlcjogU3RlcHBlcjtcbiAgICBwdWJsaWMgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHB1YmxpYyBjYW5DaGVja291dCA9IGZhbHNlO1xuICAgIHB1YmxpYyByZXF1aXJlX2xvZ2luID0gZmFsc2U7XG4gICAgcHVibGljIHN1YkNhbjogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBzdWJSZWFkeTogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBjaGFubmVsOiBhbnk7XG4gICAgcHVibGljIHN0ZXBzOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlLCBwdWJsaWMgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHB1YmxpYyBwcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsQ29uZmlnU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxDb25maWckLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFubmVsID0gcmVzXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTdGVwcygpXG4gICAgICAgICAgICB0aGlzLmhpZGVQcmljZXMgPSByZXM/LmhpZGVQcmljZXMgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhpZGVQcmljZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcEVuYWJsZWQoMykpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3ViQ2FuID0gdGhpcy5jaGVja291dFNlcnZpY2UuY2FuQ2hlY2tvdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNvbnRhaW5faXRlbXMgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5faXRlbXMpIHRoaXMuaW5pdGlhbGl6ZUNoZWNrb3V0KCk7XG4gICAgICAgICAgICBlbHNlIHRoaXMuY2FuQ2hlY2tvdXQgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3ViQ2FuPy51bnN1YnNjcmliZSgpXG4gICAgICAgIHRoaXMuc3ViUmVhZHk/LnVuc3Vic2NyaWJlKClcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ2hlY2tvdXQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXQgPSB0cnVlO1xuICAgICAgICBsZXQgc3RlcHM6IFN0ZXBJW10gPSBbXTtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnY2hhbm5lbCcsIHRoaXMuY2hhbm5lbClcbiAgICAgICAgc3RlcHMucHVzaCh7IG5hbWU6ICdhZGRyZXNzJyB9KTtcbiAgICAgICAgdGhpcy5jaGFubmVsPy5pc1NraXBwaW5nU2hpcHBpbmdTdGVwQWxsb3dlZCA/IG51bGwgOiBzdGVwcy5wdXNoKHsgbmFtZTogJ3NoaXBtZW50JyB9KTtcbiAgICAgICAgdGhpcy5jaGFubmVsPy5pc1NraXBwaW5nUGF5bWVudFN0ZXBBbGxvd2VkID8gbnVsbCA6IHN0ZXBzLnB1c2goeyBuYW1lOiAncGF5bWVudCcgfSk7XG4gICAgICAgIC8qIHN0ZXBzLnB1c2goeyBuYW1lOiAnc2hpcG1lbnQnIH0pO1xuICAgICAgICBzdGVwcy5wdXNoKHsgbmFtZTogJ3BheW1lbnQnIH0pOyAqL1xuICAgICAgICAvL2NvbnNvbGUubG9nKHN0ZXBzKVxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRTdGVwcyhzdGVwcyk7XG4gICAgICAgIHRoaXMuc2V0U3RlcHBlcigpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5jaGFubmVsPy5pc1NraXBwaW5nU2hpcHBpbmdTdGVwQWxsb3dlZCAhPSB0cnVlIHx8IHRoaXMuY2hhbm5lbD8uaXNTa2lwcGluZ1BheW1lbnRTdGVwQWxsb3dlZCAhPSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnN1YlJlYWR5ID0gdGhpcy5jaGVja291dFNlcnZpY2Uub25SZWFkeSQucGlwZShmaWx0ZXIocmVhZHkgPT4gcmVhZHkpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgcmVzID0+IHsgcmVzICYmIHRoaXMuZW5kQ2hlY2tvdXQoKSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ29CYWNrID0gKCkgPT4gdGhpcy5zdGVwcGVyLnByZXZpb3VzKCk7XG5cbiAgICBpc1N0ZXBSZWFkeSA9IChzdGVwX25hbWUpID0+IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmlzU3RlcFJlYWR5KHN0ZXBfbmFtZSk7XG5cbiAgICBlbmRDaGVja291dCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuY29tcGxldGUoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHJlcy5vayAmJiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2NoZWNrb3V0L29yZGVyX3N1Y2Nlc3MnXSksXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBzZXRTdGVwcGVyID0gKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3RlcHBlcicpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBwZXIgPSBuZXcgU3RlcHBlcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3RlcHBlcicpLCB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGVwcGVyKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIC8vY29uc29sZS5sb2codGhpcy5zdGVwcGVyKVxuICAgIH1cblxuICAgIG5leHQgPSAoKSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2codGhpcy5zdGVwcGVyKVxuICAgICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpXG4gICAgICAgIC8vY29uc29sZS5sb2codGhpcy5zdGVwcGVyKVxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICB9KVxuICAgIH07XG5cbiAgICBlcnJvciA9IChlcnJvcl92YWx1ZSkgPT4gdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coZXJyb3JfdmFsdWUpO1xuXG4gICAgZ2V0SWNvbiA9IChkYXRhX2l0ZW06IENoZWNrb3V0RGF0YSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFfaXRlbS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdjb3Vwb24nOiByZXR1cm4gJ2Fzc2V0cy9pbWFnZXMvY291cG9uLnBuZyc7XG4gICAgICAgICAgICBjYXNlICdkaXNjb3VudCc6IHJldHVybiAnYXNzZXRzL2ltYWdlcy9kaXNjb3VudC5wbmcnO1xuICAgICAgICAgICAgY2FzZSAnc2hpcG1lbnQnOiByZXR1cm4gJ2Fzc2V0cy9pbWFnZXMvaWNvLWVudmlvLnBuZyc7XG4gICAgICAgICAgICBjYXNlICdzdWJ0b3RhbCc6IHJldHVybiAnYXNzZXRzL2ltYWdlcy9wcm9kdWN0cy5wbmcnO1xuICAgICAgICAgICAgY2FzZSAndG90YWwnOiByZXR1cm4gJ2Fzc2V0cy9pbWFnZXMvaWNvLWNhcnJpdG8ucG5nJztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAnYXNzZXRzL2ltYWdlcy9pY28tY2Fycml0by5wbmcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVN0ZXBzID0gKCkgPT4ge1xuICAgICAgICAvL0VsIHBhc28gZGUgZWxlZ2lyIGRpcmVjY2nDs24gc2llbXByZSBlc3RhXG4gICAgICAgIHRoaXMuc3RlcHMucHVzaCh7IHN0ZXA6IDEsIGxhYmVsOiAnYmlsbGluZy1kZXRhaWxzJywgbmFtZTogJ2FkZHJlc3MnIH0pXG4gICAgICAgIC8vRWwgcGFzbyBkZSBlbGVnaXIgbWV0b2RvIGRlIGVudmlvXG4gICAgICAgIHRoaXMuY2hhbm5lbD8uaXNTa2lwcGluZ1NoaXBwaW5nU3RlcEFsbG93ZWQgPyBudWxsIDogdGhpcy5zdGVwcy5wdXNoKHsgc3RlcDogMiwgbGFiZWw6ICdzaGlwbWVudC1tZXRob2QnLCBuYW1lOiAnc2hpcG1lbnQnIH0pXG4gICAgICAgIC8vRWwgcGFzbyBkZSBlbGVnaXIgbWV0b2RvIGRlIHBhZ29cbiAgICAgICAgdGhpcy5jaGFubmVsPy5pc1NraXBwaW5nUGF5bWVudFN0ZXBBbGxvd2VkID8gbnVsbCA6IHRoaXMuc3RlcHMucHVzaCh7IHN0ZXA6IDMsIGxhYmVsOiAncGF5bWVudCcsIG5hbWU6ICdwYXltZW50JyB9KVxuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc3RlcHMpXG4gICAgfVxuXG4gICAgc3RlcEVuYWJsZWQgPSAoc3RlcE51bWJlcjogbnVtYmVyKSA9PiB0aGlzLnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLnN0ZXAgPT0gc3RlcE51bWJlcikgPyB0cnVlIDogZmFsc2VcblxuICAgIGdldENsYXNzVG9TdGVwcGVyID0gKGluZGV4OiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdsaW5lYSdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZXBzW2luZGV4ICsgMV0gPyAndGV4dC1jZW50ZXInIDogJ3RleHQtZW5kJ1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|