@colijnit/transaction 1.9.31 → 12.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/component/common/icon/icon.component.d.ts +1 -2
- package/bundles/colijnit-transaction.umd.js +950 -983
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +14 -14
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/app/component/checkout/checkout/checkout.component.js +22 -26
- package/esm2015/app/component/checkout/checkout-login/checkout-login.component.js +18 -27
- package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +26 -49
- package/esm2015/app/component/checkout/checkout-overview-block/checkout-overview-block.component.js +17 -24
- package/esm2015/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +18 -24
- package/esm2015/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +27 -42
- package/esm2015/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.js +19 -22
- package/esm2015/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +25 -36
- package/esm2015/app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +18 -24
- package/esm2015/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +16 -21
- package/esm2015/app/component/checkout/ione-checkout.component.js +27 -34
- package/esm2015/app/component/checkout/ione-checkout.module.js +55 -58
- package/esm2015/app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component.js +16 -18
- package/esm2015/app/component/common/icon/icon.component.js +14 -18
- package/esm2015/app/component/common/image-display/image-display.component.js +19 -36
- package/esm2015/app/component/common/no-image-display/no-image-display.component.js +14 -20
- package/esm2015/app/component/core/core.module.js +32 -34
- package/esm2015/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.js +20 -27
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.component.js +31 -48
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +51 -52
- package/esm2015/app/component/shopping-cart/shopping-cart/shopping-cart.component.js +29 -49
- package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +25 -38
- package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +27 -38
- package/esm2015/app/component/shopping-cart/stock-status-indicator/stock-status-indicator.component.js +13 -17
- package/esm2015/app/enum/checkout-steps.enum.js +1 -1
- package/esm2015/app/enum/content-view-mode.enum.js +1 -1
- package/esm2015/app/enum/direction.enum.js +1 -1
- package/esm2015/app/enum/language-code.enum.js +1 -1
- package/esm2015/app/enum/order-discount-type.enum.js +1 -1
- package/esm2015/app/enum/time-size.type.js +1 -1
- package/esm2015/app/model/business-object.js +6 -6
- package/esm2015/app/model/text-value-container.js +1 -1
- package/esm2015/app/pipe/append.pipe.js +6 -8
- package/esm2015/app/pipe/co-currency.pipe.js +8 -11
- package/esm2015/app/pipe/date-duration.pipe.js +6 -8
- package/esm2015/app/pipe/delivery-time.pipe.js +6 -8
- package/esm2015/app/pipe/localize.pipe.js +9 -13
- package/esm2015/app/pipe/safe-style-pipe.js +9 -11
- package/esm2015/app/service/dictionary.service.js +10 -10
- package/esm2015/app/service/ione-connector-adapter.service.js +8 -8
- package/esm2015/app/service/options.service.js +8 -8
- package/esm2015/app/service/transaction-event.service.js +6 -8
- package/esm2015/app/service/transaction.service.js +11 -12
- package/esm2015/app/utils/string-utils.js +1 -1
- package/esm2015/assets/dictionary/text.properties.js +1 -1
- package/esm2015/colijnit-transaction.js +15 -15
- package/esm2015/factory/business-object-factory.js +1 -1
- package/esm2015/factory/decorators/boolean.decorator.js +1 -1
- package/esm2015/factory/decorators/complex-array.decorator.js +1 -1
- package/esm2015/factory/decorators/complex-field.decorator.js +2 -2
- package/esm2015/factory/decorators/date-field.decorator.js +1 -1
- package/esm2015/factory/decorators/string-number.decorator.js +1 -1
- package/esm2015/public_api.js +1 -1
- package/esm2015/utils/array-utils.js +1 -1
- package/esm2015/utils/is-nill.function.js +1 -1
- package/fesm2015/colijnit-transaction.js +640 -799
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/package.json +33 -23
- package/bundles/colijnit-transaction.umd.min.js +0 -16
- package/bundles/colijnit-transaction.umd.min.js.map +0 -1
- package/enum/icon.enum.d.ts +0 -281
- package/esm2015/enum/icon.enum.js +0 -283
- package/esm5/app/component/checkout/checkout/checkout.component.js +0 -196
- package/esm5/app/component/checkout/checkout-login/checkout-login.component.js +0 -62
- package/esm5/app/component/checkout/checkout-overview/checkout-overview.component.js +0 -183
- package/esm5/app/component/checkout/checkout-overview-block/checkout-overview-block.component.js +0 -48
- package/esm5/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +0 -34
- package/esm5/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +0 -298
- package/esm5/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.js +0 -98
- package/esm5/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +0 -303
- package/esm5/app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +0 -33
- package/esm5/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +0 -48
- package/esm5/app/component/checkout/ione-checkout.component.js +0 -163
- package/esm5/app/component/checkout/ione-checkout.module.js +0 -82
- package/esm5/app/component/checkout/retail-transaction-checkout/retail-transaction-checkout.component.js +0 -62
- package/esm5/app/component/common/icon/icon.component.js +0 -40
- package/esm5/app/component/common/image-display/image-display.component.js +0 -57
- package/esm5/app/component/common/no-image-display/no-image-display.component.js +0 -29
- package/esm5/app/component/core/core.module.js +0 -48
- package/esm5/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.js +0 -66
- package/esm5/app/component/shopping-cart/ione-shopping-cart.component.js +0 -169
- package/esm5/app/component/shopping-cart/ione-shopping-cart.module.js +0 -70
- package/esm5/app/component/shopping-cart/shopping-cart/shopping-cart.component.js +0 -179
- package/esm5/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +0 -208
- package/esm5/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +0 -563
- package/esm5/app/component/shopping-cart/stock-status-indicator/stock-status-indicator.component.js +0 -28
- package/esm5/app/enum/checkout-steps.enum.js +0 -10
- package/esm5/app/enum/content-view-mode.enum.js +0 -10
- package/esm5/app/enum/direction.enum.js +0 -9
- package/esm5/app/enum/language-code.enum.js +0 -8
- package/esm5/app/enum/order-discount-type.enum.js +0 -7
- package/esm5/app/enum/time-size.type.js +0 -10
- package/esm5/app/model/business-object.js +0 -85
- package/esm5/app/model/text-value-container.js +0 -7
- package/esm5/app/pipe/append.pipe.js +0 -22
- package/esm5/app/pipe/co-currency.pipe.js +0 -55
- package/esm5/app/pipe/date-duration.pipe.js +0 -61
- package/esm5/app/pipe/delivery-time.pipe.js +0 -38
- package/esm5/app/pipe/localize.pipe.js +0 -34
- package/esm5/app/pipe/safe-style-pipe.js +0 -22
- package/esm5/app/service/dictionary.service.js +0 -83
- package/esm5/app/service/ione-connector-adapter.service.js +0 -549
- package/esm5/app/service/options.service.js +0 -108
- package/esm5/app/service/transaction-event.service.js +0 -21
- package/esm5/app/service/transaction.service.js +0 -690
- package/esm5/app/utils/string-utils.js +0 -73
- package/esm5/assets/dictionary/text.properties.js +0 -282
- package/esm5/colijnit-transaction.js +0 -36
- package/esm5/enum/icon.enum.js +0 -283
- package/esm5/factory/business-object-factory.js +0 -122
- package/esm5/factory/decorators/boolean.decorator.js +0 -106
- package/esm5/factory/decorators/complex-array.decorator.js +0 -59
- package/esm5/factory/decorators/complex-field.decorator.js +0 -61
- package/esm5/factory/decorators/date-field.decorator.js +0 -40
- package/esm5/factory/decorators/string-number.decorator.js +0 -47
- package/esm5/public_api.js +0 -8
- package/esm5/utils/array-utils.js +0 -188
- package/esm5/utils/is-nill.function.js +0 -5
- package/fesm5/colijnit-transaction.js +0 -5620
- package/fesm5/colijnit-transaction.js.map +0 -1
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate, __generator } from "tslib";
|
|
2
|
-
import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild } from "@angular/core";
|
|
3
|
-
import { FormComponent } from "@colijnit/corecomponents_v9";
|
|
4
|
-
import { Address } from "@colijnit/transactionapi/build/model/address.bo";
|
|
5
|
-
import { AddressType } from "@colijnit/transactionapi/build/enum/address-type.enum";
|
|
6
|
-
import { TransactionService } from "../../../service/transaction.service";
|
|
7
|
-
import { DictionaryService } from "../../../service/dictionary.service";
|
|
8
|
-
var CheckoutOverviewDeliveryEditComponent = /** @class */ (function () {
|
|
9
|
-
function CheckoutOverviewDeliveryEditComponent(cdr, _dictionaryService, service) {
|
|
10
|
-
this.cdr = cdr;
|
|
11
|
-
this._dictionaryService = _dictionaryService;
|
|
12
|
-
this.service = service;
|
|
13
|
-
this.deliveryAddressType = AddressType.DeliveryAddress;
|
|
14
|
-
this.billingAddressType = AddressType.BillingAddress;
|
|
15
|
-
this.validSubmit = new EventEmitter();
|
|
16
|
-
this.invalidSubmit = new EventEmitter();
|
|
17
|
-
this.deliveryOptionList = [];
|
|
18
|
-
this.deliveryOptions = [];
|
|
19
|
-
this.deliveryOptionFields = { text: "description", value: "code" };
|
|
20
|
-
this.deliveryMethods = [];
|
|
21
|
-
this.deliveryMethodFields = { text: "description", value: "code" };
|
|
22
|
-
this.addLocationPopup = false;
|
|
23
|
-
this.changeLocationPopup = false;
|
|
24
|
-
this.preferredDateOptions = [
|
|
25
|
-
{ text: "NOT_AFTER", value: ">" },
|
|
26
|
-
{ text: "NOT_BEFORE", value: "<" },
|
|
27
|
-
{ text: "ON_DATE", value: "=" },
|
|
28
|
-
];
|
|
29
|
-
this.preferredDate = new Date();
|
|
30
|
-
this.marketing = [];
|
|
31
|
-
this.marketingFields = { text: "description", value: "code" };
|
|
32
|
-
this.addresses = [];
|
|
33
|
-
this.columns = [];
|
|
34
|
-
// TODO: Deze velden nog opnemen in Transaction!!
|
|
35
|
-
this.deliveryDateFinal = false;
|
|
36
|
-
this.assemblyDate = new Date();
|
|
37
|
-
this.totalAssemblyTime = "";
|
|
38
|
-
this.dropshipment = false;
|
|
39
|
-
this.columns.push({ field: "streetName", headerText: this._dictionaryService.get("STREET") }, { field: "houseNo", headerText: this._dictionaryService.get("HOUSE_NO") }, { field: "houseNoAddition", headerText: this._dictionaryService.get("HOUSE_NO_ADDITION") }, { field: "postalCode", headerText: this._dictionaryService.get("POSTAL_CODE"), allowFiltering: false }, { field: "city", headerText: this._dictionaryService.get("CITY") });
|
|
40
|
-
}
|
|
41
|
-
Object.defineProperty(CheckoutOverviewDeliveryEditComponent.prototype, "billingAddress", {
|
|
42
|
-
get: function () {
|
|
43
|
-
if (this.transaction.invoiceAddress === undefined) {
|
|
44
|
-
if (this.relation &&
|
|
45
|
-
this.relation.firstBillingAddress &&
|
|
46
|
-
this.relation.firstBillingAddress.isNotEmptyAddress()) {
|
|
47
|
-
this.transaction.invoiceAddress = this.relation.firstBillingAddress;
|
|
48
|
-
this._setCountryNameToAddress(this.transaction.invoiceAddress).then();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return this.transaction.invoiceAddress;
|
|
52
|
-
},
|
|
53
|
-
enumerable: true,
|
|
54
|
-
configurable: true
|
|
55
|
-
});
|
|
56
|
-
Object.defineProperty(CheckoutOverviewDeliveryEditComponent.prototype, "deliveryAddress", {
|
|
57
|
-
get: function () {
|
|
58
|
-
if (this.transaction.transactionAddress === undefined) {
|
|
59
|
-
if (this.relation &&
|
|
60
|
-
this.relation.firstDeliveryAddress &&
|
|
61
|
-
this.relation.firstDeliveryAddress.isNotEmptyAddress()) {
|
|
62
|
-
this.transaction.transactionAddress = this.relation.firstDeliveryAddress;
|
|
63
|
-
this._setCountryNameToAddress(this.transaction.transactionAddress).then();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return this.transaction.transactionAddress;
|
|
67
|
-
},
|
|
68
|
-
enumerable: true,
|
|
69
|
-
configurable: true
|
|
70
|
-
});
|
|
71
|
-
Object.defineProperty(CheckoutOverviewDeliveryEditComponent.prototype, "deliveryDate", {
|
|
72
|
-
get: function () {
|
|
73
|
-
if (this.transaction.deliveryDate === undefined) {
|
|
74
|
-
this.transaction.deliveryDate = new Date();
|
|
75
|
-
}
|
|
76
|
-
return this.transaction.deliveryDate;
|
|
77
|
-
},
|
|
78
|
-
set: function (value) {
|
|
79
|
-
this.transaction.deliveryDate = value;
|
|
80
|
-
},
|
|
81
|
-
enumerable: true,
|
|
82
|
-
configurable: true
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(CheckoutOverviewDeliveryEditComponent.prototype, "preferredDeliveryDate", {
|
|
85
|
-
get: function () {
|
|
86
|
-
if (this.transaction.preferredDeliveryDate === undefined) {
|
|
87
|
-
this.transaction.preferredDeliveryDate = new Date();
|
|
88
|
-
}
|
|
89
|
-
return this.transaction.preferredDeliveryDate;
|
|
90
|
-
},
|
|
91
|
-
set: function (value) {
|
|
92
|
-
this.transaction.preferredDeliveryDate = value;
|
|
93
|
-
},
|
|
94
|
-
enumerable: true,
|
|
95
|
-
configurable: true
|
|
96
|
-
});
|
|
97
|
-
CheckoutOverviewDeliveryEditComponent.prototype.newRelationAddress = function () {
|
|
98
|
-
if (this.relation) {
|
|
99
|
-
var address = new Address();
|
|
100
|
-
address.addressType = AddressType.DeliveryAddress;
|
|
101
|
-
address.startDate = new Date();
|
|
102
|
-
address.sequence = this.relation.getNextAddressSequence();
|
|
103
|
-
this.relation.addresses.push(address);
|
|
104
|
-
return address;
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
CheckoutOverviewDeliveryEditComponent.prototype.ngOnInit = function () {
|
|
108
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
109
|
-
var _a, _b, _c;
|
|
110
|
-
return __generator(this, function (_d) {
|
|
111
|
-
switch (_d.label) {
|
|
112
|
-
case 0:
|
|
113
|
-
if (this.transaction) {
|
|
114
|
-
if (this.transaction.transactionAddress === undefined && !this.deliveryAddress) {
|
|
115
|
-
this.transaction.transactionAddress = this.deliveryAddress;
|
|
116
|
-
}
|
|
117
|
-
if (this.transaction.invoiceAddress === undefined && !this.billingAddress) {
|
|
118
|
-
this.transaction.invoiceAddress = this.billingAddress;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
this.deliveryCosts = this.calculateDeliveryCosts();
|
|
122
|
-
this.assemblyCosts = this.calculateAssemblyCosts();
|
|
123
|
-
_a = this;
|
|
124
|
-
return [4 /*yield*/, this.service.getDeliveryMethods()];
|
|
125
|
-
case 1:
|
|
126
|
-
_a.deliveryMethods = _d.sent();
|
|
127
|
-
_b = this;
|
|
128
|
-
return [4 /*yield*/, this.service.getDeliveryOptions()];
|
|
129
|
-
case 2:
|
|
130
|
-
_b.deliveryOptionList = _d.sent();
|
|
131
|
-
_c = this;
|
|
132
|
-
return [4 /*yield*/, this.service.getMarketingCodes()];
|
|
133
|
-
case 3:
|
|
134
|
-
_c.marketing = _d.sent();
|
|
135
|
-
return [4 /*yield*/, this.onDeliveryMethodChange(this.transaction.deliveryMethod)];
|
|
136
|
-
case 4:
|
|
137
|
-
_d.sent();
|
|
138
|
-
return [2 /*return*/];
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
CheckoutOverviewDeliveryEditComponent.prototype.ngAfterViewInit = function () {
|
|
144
|
-
this.cdr.detectChanges();
|
|
145
|
-
};
|
|
146
|
-
CheckoutOverviewDeliveryEditComponent.prototype.submit = function () {
|
|
147
|
-
return this.deliveryForm.submit();
|
|
148
|
-
};
|
|
149
|
-
CheckoutOverviewDeliveryEditComponent.prototype.onDeliveryMethodChange = function (deliveryMethodId) {
|
|
150
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
151
|
-
var deliveryMethod;
|
|
152
|
-
return __generator(this, function (_a) {
|
|
153
|
-
deliveryMethod = this.selectDeliveryMethodById(deliveryMethodId);
|
|
154
|
-
this.transaction.deliveryMethod = deliveryMethodId;
|
|
155
|
-
if (deliveryMethod.length) {
|
|
156
|
-
this.deliveryOptions = this.selectDeliveryOptionsByDeliveryMethod(deliveryMethod[0]);
|
|
157
|
-
this.transaction.deliveryOptions = [];
|
|
158
|
-
if (this.deliveryOptions.length) {
|
|
159
|
-
this.transaction.deliveryOptions.push(this.deliveryOptions[0].code);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return [2 /*return*/];
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
};
|
|
166
|
-
CheckoutOverviewDeliveryEditComponent.prototype.selectDeliveryOptionsByDeliveryMethod = function (deliveryMethod) {
|
|
167
|
-
return this.deliveryOptionList.filter(function (deliveryOption) { return deliveryMethod.deliveryOptions.indexOf(deliveryOption.code) !== -1; });
|
|
168
|
-
};
|
|
169
|
-
CheckoutOverviewDeliveryEditComponent.prototype.selectDeliveryMethodById = function (deliveryMethodId) {
|
|
170
|
-
return this.deliveryMethods.filter(function (delivery) { return delivery.code === deliveryMethodId; });
|
|
171
|
-
};
|
|
172
|
-
CheckoutOverviewDeliveryEditComponent.prototype.changeAddress = function (addressType) {
|
|
173
|
-
this._addressType = addressType;
|
|
174
|
-
this.addresses = this.relation.addresses;
|
|
175
|
-
this.changeLocationPopup = true;
|
|
176
|
-
};
|
|
177
|
-
CheckoutOverviewDeliveryEditComponent.prototype.saveNewLocation = function () {
|
|
178
|
-
this.locationForm.submit();
|
|
179
|
-
};
|
|
180
|
-
CheckoutOverviewDeliveryEditComponent.prototype.saveLocation = function () {
|
|
181
|
-
this.addLocation();
|
|
182
|
-
this.changeLocationPopup = false;
|
|
183
|
-
};
|
|
184
|
-
CheckoutOverviewDeliveryEditComponent.prototype.addLocation = function () {
|
|
185
|
-
this.updateAddress(this.newAddress).then();
|
|
186
|
-
this.relation.addresses.push(this.newAddress);
|
|
187
|
-
this.service.saveRelation().then();
|
|
188
|
-
this.addLocationPopup = false;
|
|
189
|
-
};
|
|
190
|
-
CheckoutOverviewDeliveryEditComponent.prototype.updateAddress = function (address) {
|
|
191
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
192
|
-
return __generator(this, function (_a) {
|
|
193
|
-
switch (_a.label) {
|
|
194
|
-
case 0:
|
|
195
|
-
if (this._addressType === AddressType.DeliveryAddress) {
|
|
196
|
-
this.transaction.transactionAddress = address;
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
this.transaction.invoiceAddress = address;
|
|
200
|
-
}
|
|
201
|
-
return [4 /*yield*/, this._setCountryNameToAddress(address)];
|
|
202
|
-
case 1:
|
|
203
|
-
_a.sent();
|
|
204
|
-
return [2 /*return*/];
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
};
|
|
209
|
-
CheckoutOverviewDeliveryEditComponent.prototype.isDeliveryOptionChecked = function (deliveryOptionItem) {
|
|
210
|
-
return (this.transaction.deliveryOptions.indexOf(deliveryOptionItem.code, 0) === 0);
|
|
211
|
-
};
|
|
212
|
-
CheckoutOverviewDeliveryEditComponent.prototype.changePreferredDeliveryDate2 = function (preferredDateOption) {
|
|
213
|
-
this.transaction.preferredDeliveryDate2 = preferredDateOption;
|
|
214
|
-
};
|
|
215
|
-
CheckoutOverviewDeliveryEditComponent.prototype.onMarketingCodeChange = function (marketingCode) {
|
|
216
|
-
this.transaction.marketingCode = marketingCode;
|
|
217
|
-
};
|
|
218
|
-
CheckoutOverviewDeliveryEditComponent.prototype.onChangeLocationCancelClick = function () {
|
|
219
|
-
this.changeLocationPopup = false;
|
|
220
|
-
};
|
|
221
|
-
CheckoutOverviewDeliveryEditComponent.prototype.onAddLocationOkClick = function () {
|
|
222
|
-
this._addAddress(this._addressType);
|
|
223
|
-
this.addLocationPopup = true;
|
|
224
|
-
};
|
|
225
|
-
CheckoutOverviewDeliveryEditComponent.prototype.handleAddressSelected = function (rows) {
|
|
226
|
-
this.selectedAddress = (rows.find(function (x) { return x !== undefined; }));
|
|
227
|
-
this.updateAddress(this.selectedAddress);
|
|
228
|
-
this.changeLocationPopup = false;
|
|
229
|
-
};
|
|
230
|
-
CheckoutOverviewDeliveryEditComponent.prototype.calculateDeliveryCosts = function () {
|
|
231
|
-
return 0;
|
|
232
|
-
};
|
|
233
|
-
CheckoutOverviewDeliveryEditComponent.prototype.calculateAssemblyCosts = function () {
|
|
234
|
-
return 0;
|
|
235
|
-
};
|
|
236
|
-
CheckoutOverviewDeliveryEditComponent.prototype._addAddress = function (addressType) {
|
|
237
|
-
this.newAddress = new Address();
|
|
238
|
-
this.newAddress.addressType = addressType;
|
|
239
|
-
this.newAddress.startDate = new Date();
|
|
240
|
-
this.newAddress.sequence = this.relation.getNextAddressSequence();
|
|
241
|
-
};
|
|
242
|
-
CheckoutOverviewDeliveryEditComponent.prototype._setCountryNameToAddress = function (address) {
|
|
243
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
244
|
-
var country;
|
|
245
|
-
return __generator(this, function (_a) {
|
|
246
|
-
switch (_a.label) {
|
|
247
|
-
case 0:
|
|
248
|
-
if (!(address.countryId && !address.countryName)) return [3 /*break*/, 2];
|
|
249
|
-
return [4 /*yield*/, this.service.getCountry(address.countryId)];
|
|
250
|
-
case 1:
|
|
251
|
-
country = _a.sent();
|
|
252
|
-
address.countryName = country.description;
|
|
253
|
-
_a.label = 2;
|
|
254
|
-
case 2: return [2 /*return*/];
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
});
|
|
258
|
-
};
|
|
259
|
-
CheckoutOverviewDeliveryEditComponent.ctorParameters = function () { return [
|
|
260
|
-
{ type: ChangeDetectorRef },
|
|
261
|
-
{ type: DictionaryService },
|
|
262
|
-
{ type: TransactionService }
|
|
263
|
-
]; };
|
|
264
|
-
__decorate([
|
|
265
|
-
ViewChild("deliveryForm", { read: FormComponent })
|
|
266
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "deliveryForm", void 0);
|
|
267
|
-
__decorate([
|
|
268
|
-
ViewChild("locationForm", { read: FormComponent })
|
|
269
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "locationForm", void 0);
|
|
270
|
-
__decorate([
|
|
271
|
-
ViewChild("changeLocationDialog")
|
|
272
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "changeLocationDialog", void 0);
|
|
273
|
-
__decorate([
|
|
274
|
-
ViewChild("addressGrid")
|
|
275
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "addressGrid", void 0);
|
|
276
|
-
__decorate([
|
|
277
|
-
Input()
|
|
278
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "relation", void 0);
|
|
279
|
-
__decorate([
|
|
280
|
-
Input()
|
|
281
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "transaction", void 0);
|
|
282
|
-
__decorate([
|
|
283
|
-
Output()
|
|
284
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "validSubmit", void 0);
|
|
285
|
-
__decorate([
|
|
286
|
-
Output()
|
|
287
|
-
], CheckoutOverviewDeliveryEditComponent.prototype, "invalidSubmit", void 0);
|
|
288
|
-
CheckoutOverviewDeliveryEditComponent = __decorate([
|
|
289
|
-
Component({
|
|
290
|
-
selector: "checkout-overview-delivery-edit",
|
|
291
|
-
template: "\n <co-form #deliveryForm (validSubmit)=\"validSubmit.emit()\" (invalidSubmit)=\"invalidSubmit.emit()\">\n <div>\n <div>\n <label [textContent]=\"'DELIVERY' | localize\"\n class=\"checkout-label-h2\"\n ></label>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <label [textContent]=\"'DELIVERY_ADDRESS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <checkout-overview-delivery-address [address]=\"deliveryAddress\"></checkout-overview-delivery-address>\n <div class=\"container-button-change-address\">\n <co-button [label]=\"'DELIVERY_ADDRESS_CHANGE' | localize\" (click)=\"changeAddress(deliveryAddressType)\"></co-button>\n </div>\n </div>\n\n <div class=\"default-flex-column\">\n <label [textContent]=\"'INVOICE_ADDRESS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <checkout-overview-delivery-address [address]=\"billingAddress\"></checkout-overview-delivery-address>\n <div class=\"container-button-change-address\">\n <co-button [label]=\"'INVOICE_ADDRESS_CHANGE' | localize\" (click)=\"changeAddress(billingAddressType)\"></co-button>\n </div>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'DELIVERY_MOMENT' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'DELIVERY_DATE' | localize \" [(model)]=\"deliveryDate\"></co-input-date>\n <co-input-checkbox [label]=\"'PART_DELIVERIES' | localize\" [(model)]=\"transaction.allowPartialDelivery\"></co-input-checkbox>\n </div>\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'PREFERRED_DATE' | localize \" [(model)]=\"preferredDate\"></co-input-date>\n <ng-container *ngFor=\"let preferredDateOption of preferredDateOptions\">\n <co-input-radio-button [name]=\"'preferedDeliveryDate2'\"\n [label]=\"preferredDateOption.text | localize\"\n [value]=\"preferredDateOption.value\"\n [checked]=\"transaction.preferredDeliveryDate2 === preferredDateOption.value\"\n (modelChange)=\"changePreferredDeliveryDate2(preferredDateOption.value)\"\n ></co-input-radio-button>\n </ng-container>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"transaction.deliveryMethod\"\n [source]=\"deliveryMethods\"\n [fields]=\"deliveryMethodFields\"\n [placeholder]=\"'DELIVERY_METHOD2' | localize\"\n [required]=\"true\"\n (modelChange)=\"onDeliveryMethodChange($event)\"\n ></co-input-combo-box>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'DELIVERY_OPTIONS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-multi-select-list\n [placeHolder]=\"'DELIVERY_OPTIONS' | localize\"\n [collection]=\"deliveryOptions\"\n [fields]=\"deliveryOptionFields\"\n [(model)]=\"transaction.deliveryOptions\"\n [showCheckbox]=\"true\"\n [required]=\"true\"\n ></co-multi-select-list>\n </div>\n </div>\n\n <div class=\"\">\n <label [textContent]=\"'REMARKS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.remark\" [placeholder]=\"'REMARKS' | localize\"></co-input-text>\n </div>\n </div>\n\n <div class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'DELIVERY_DATE_FINAL' | localize\" [(model)]=\"deliveryDateFinal\"></co-input-checkbox>\n </div>\n <div class=\"default-flex-column\">\n <co-input-date [placeholder]=\"'ASSEMBLY_DATE' | localize \" [(model)]=\"assemblyDate\"></co-input-date>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [placeholder]=\"'TOTAL_ASSEMBLY_TIME' | localize \" [(model)]=\"totalAssemblyTime\"></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-checkbox [label]=\"'DROPSHIPMENT' | localize\" [(model)]=\"dropshipment\"></co-input-checkbox>\n </div>\n\n <div class=\"default-flex-row\">\n <div>\n <label [textContent]=\"'DELIVERY_COSTS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>{{ deliveryCosts }}</div>\n </div>\n <div>\n <label [textContent]=\"'ASSEMBLY_COSTS' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div>{{ assemblyCosts }}</div>\n </div>\n </div>\n\n <div>\n <label [textContent]=\"'MARKETING' | localize\"\n class=\"checkout-label-h3\"\n ></label>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"transaction.marketingCode\"\n [source]=\"marketing\"\n [fields]=\"marketingFields\"\n [placeholder]=\"'MARKETING' | localize\"\n [required]=\"true\"\n (modelChange)=\"onMarketingCodeChange($event)\"\n ></co-input-combo-box>\n </div>\n </div>\n\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.relationReference\" [placeholder]=\"'REFERENCE_RELATION' | localize\"></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"transaction.ownReference\" [placeholder]=\"'OWN_REFERENCE' | localize\"></co-input-text>\n </div>\n </div>\n\n </co-form>\n\n <co-dialog [visible]=\"addLocationPopup\">\n <ng-container header>{{ 'NEW_LOCATION' | localize }}</ng-container>\n <co-form #locationForm (validSubmit)=\"saveLocation()\">\n <checkout-overview-relation-address\n label=\"ADDRESS\" [address]=\"newAddress\"\n ></checkout-overview-relation-address>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end\">\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"addLocationPopup = false;\"></co-button>\n <co-button [label]=\"'SAVE' | localize\" (click)=\"saveNewLocation()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n\n <co-dialog #changeLocationDialog\n [visible]=\"changeLocationPopup\"\n (closeClick)=\"onChangeLocationCancelClick()\"\n (overlayClick)=\"onChangeLocationCancelClick()\"\n >\n <ng-container header>{{ 'ADDRESS' | localize }}</ng-container>\n <co-form>\n <div class=\"form-content\">\n <div>\n <co-grid #addressGrid\n [data]=\"addresses\"\n [columns]=\"columns\"\n [pagingEnabled]=\"'true'\"\n [maxNumberOfRows]=\"'20'\"\n (rowsSelected)=\"handleAddressSelected($event)\"\n ></co-grid>\n </div>\n </div>\n <div class=\"flex-center\" fxLayoutGap=\"10px\">\n <co-button [label]=\"'ADDRESS_ADD' | localize\" (click)=\"onAddLocationOkClick()\"></co-button>\n <co-button [label]=\"'CANCEL' | localize\" (click)=\"onChangeLocationCancelClick()\"></co-button>\n </div>\n </co-form>\n </co-dialog>\n ",
|
|
292
|
-
styles: ["body,html{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.overview-header .overview-step-nr{border-radius:50%;color:#f7fafa;background-color:#2b60a7}.flex-center,.step-content-customer,.step-content-delivery{display:flex}.flex-center,.step-content-delivery{flex-direction:row}.step-content-customer{flex-direction:column}.flex-center{align-items:center!important;justify-content:center!important;margin:10px 0}.step-content-customer,.step-content-delivery{padding:20px;background-color:#fff}.triangle{border-radius:3px}.full-width{width:100%}.checkout-viewport{max-width:60%;margin-left:20%}.mat-label{font-family:Montserrat,Arial,Helvetica,sans-serif}.default-flex-row{flex-direction:row;box-sizing:border-box;-moz-column-gap:20px;column-gap:20px;display:flex}.default-flex-column{display:flex;flex-direction:column;width:200px}.privacy-row{display:flex;flex-direction:row;margin-bottom:20px}.privacy-column-left{display:flex;flex-direction:column;min-width:150px;max-width:150px;overflow-wrap:break-word}.privacy-column-right{display:flex;flex-direction:row;margin-left:50px}.checkout-label-h2{display:block;margin-top:1em;margin-bottom:1em;font-size:18px;font-weight:700}.checkout-label-h3{display:block;margin-top:1em;margin-bottom:1em;font-size:14px;font-weight:700}co-input-radio-button{margin-left:16px}.checkout-overview h2{font-size:18px;font-weight:700}.checkout-overview h3{font-size:15px}mat-horizontal-stepper{position:sticky;top:0;z-index:30}::ng-deep .mat-horizontal-content-container{display:none}::ng-deep .step-wrapper{width:auto;background:rgba(255,255,255,.25)}::ng-deep .step-wrapper button-colijn{margin-top:20px}::ng-deep .step-wrapper.payment{align-items:center!important;justify-content:left!important}.overview-header{background:rgba(255,255,255,.25);border-top-left-radius:5px;border-top-right-radius:5px}.overview-header .overview-step-nr{width:20px;height:20px;text-align:center;font-weight:700}.overview-body{padding:30px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.overview-body .contact-option-value{align-self:center}.overview-header-label,.overview-label{font-weight:700}ul.cart-buttons{margin-top:20px;margin-bottom:20px;display:flex;justify-content:space-between;flex-wrap:nowrap;list-style-type:none}ul.cart-buttons>li{padding-left:11px;padding-right:11px;display:flex;align-items:center;justify-content:center;flex-grow:0;flex-shrink:0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;height:40px;background-color:#f7fafa;cursor:pointer;font-size:15px;color:#2b60a7;border:1px solid #dce4ea;border-radius:5px;opacity:1}ul.cart-buttons>li a{white-space:nowrap}", ".container-button-change-address{margin-top:5px}"]
|
|
293
|
-
})
|
|
294
|
-
], CheckoutOverviewDeliveryEditComponent);
|
|
295
|
-
return CheckoutOverviewDeliveryEditComponent;
|
|
296
|
-
}());
|
|
297
|
-
export { CheckoutOverviewDeliveryEditComponent };
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvdHJhbnNhY3Rpb24vIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50L2NoZWNrb3V0L2NoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQvY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBcUMsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFOUYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBR3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUdsRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUd4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQTRNdEU7SUE0SUUsK0NBQ1ksR0FBc0IsRUFDdEIsa0JBQXFDLEVBQ3RDLE9BQTJCO1FBRjFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDdEMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUE5SXRCLHdCQUFtQixHQUFnQixXQUFXLENBQUMsZUFBZSxDQUFDO1FBQy9ELHVCQUFrQixHQUFnQixXQUFXLENBQUMsY0FBYyxDQUFDO1FBcUJ0RSxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzNELGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFN0QsdUJBQWtCLEdBQXFC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K0VBQ2Q7SUFHbkM7UUFEQyxTQUFTLENBQUMsc0JBQXNCLENBQUM7dUZBQ2E7SUFHL0M7UUFEQyxTQUFTLENBQUMsYUFBYSxDQUFDOzhFQUNnQjtJQUd6QztRQURDLEtBQUssRUFBRTsyRUFDeUI7SUFHakM7UUFEQyxLQUFLLEVBQUU7OEVBQzRCO0lBR3BDO1FBREMsTUFBTSxFQUFFOzhFQUN5RDtJQUdsRTtRQURDLE1BQU0sRUFBRTtnRkFDMkQ7SUExQnpELHFDQUFxQztRQXpNakQsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGlDQUFpQztZQUMzQyxRQUFRLEVBQUUsOHBRQWlNVDs7U0FLRixDQUFDO09BQ1cscUNBQXFDLENBaVFqRDtJQUFELDRDQUFDO0NBQUEsQUFqUUQsSUFpUUM7U0FqUVkscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0NvRGlhbG9nQ29tcG9uZW50LCBDb0dyaWRDb21wb25lbnQsIEZvcm1Db21wb25lbnR9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjlcIjtcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWFueS10eXBlXCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHtHZW5kZXJUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZ2VuZGVyLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvXCI7XG5pbXBvcnQge0FkZHJlc3NUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vYWRkcmVzcy10eXBlLmVudW1cIjtcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvXCI7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9wdGlvbi5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7VGV4dFZhbHVlQ29udGFpbmVyfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWwvdGV4dC12YWx1ZS1jb250YWluZXJcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8uYm9cIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm9cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXRcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y28tZm9ybSAjZGVsaXZlcnlGb3JtICh2YWxpZFN1Ym1pdCk9XCJ2YWxpZFN1Ym1pdC5lbWl0KClcIiAoaW52YWxpZFN1Ym1pdCk9XCJpbnZhbGlkU3VibWl0LmVtaXQoKVwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8bGFiZWwgW3RleHRDb250ZW50XT1cIidERUxJVkVSWScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDJcIlxuICAgICAgICAgID48L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInREVMSVZFUllfQUREUkVTUycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja291dC1sYWJlbC1oM1wiXG4gICAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICAgIDxjaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1hZGRyZXNzIFthZGRyZXNzXT1cImRlbGl2ZXJ5QWRkcmVzc1wiPjwvY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktYWRkcmVzcz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItYnV0dG9uLWNoYW5nZS1hZGRyZXNzXCI+XG4gICAgICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidERUxJVkVSWV9BRERSRVNTX0NIQU5HRScgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJjaGFuZ2VBZGRyZXNzKGRlbGl2ZXJ5QWRkcmVzc1R5cGUpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0VfQUREUkVTUycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja291dC1sYWJlbC1oM1wiXG4gICAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICAgIDxjaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1hZGRyZXNzIFthZGRyZXNzXT1cImJpbGxpbmdBZGRyZXNzXCI+PC9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1hZGRyZXNzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1idXR0b24tY2hhbmdlLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ0lOVk9JQ0VfQUREUkVTU19DSEFOR0UnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiY2hhbmdlQWRkcmVzcyhiaWxsaW5nQWRkcmVzc1R5cGUpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdj5cbiAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInREVMSVZFUllfTU9NRU5UJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDNcIlxuICAgICAgICA+PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICAgIDxjby1pbnB1dC1kYXRlIFtwbGFjZWhvbGRlcl09XCInREVMSVZFUllfREFURScgfCBsb2NhbGl6ZSBcIiBbKG1vZGVsKV09XCJkZWxpdmVyeURhdGVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFtsYWJlbF09XCInUEFSVF9ERUxJVkVSSUVTJyB8IGxvY2FsaXplXCIgWyhtb2RlbCldPVwidHJhbnNhY3Rpb24uYWxsb3dQYXJ0aWFsRGVsaXZlcnlcIj48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICA8Y28taW5wdXQtZGF0ZSBbcGxhY2Vob2xkZXJdPVwiJ1BSRUZFUlJFRF9EQVRFJyB8IGxvY2FsaXplIFwiIFsobW9kZWwpXT1cInByZWZlcnJlZERhdGVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJlZmVycmVkRGF0ZU9wdGlvbiBvZiBwcmVmZXJyZWREYXRlT3B0aW9uc1wiPlxuICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiBbbmFtZV09XCIncHJlZmVyZWREZWxpdmVyeURhdGUyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwcmVmZXJyZWREYXRlT3B0aW9uLnRleHQgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwcmVmZXJyZWREYXRlT3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwidHJhbnNhY3Rpb24ucHJlZmVycmVkRGVsaXZlcnlEYXRlMiA9PT0gcHJlZmVycmVkRGF0ZU9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VQcmVmZXJyZWREZWxpdmVyeURhdGUyKHByZWZlcnJlZERhdGVPcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICA8Y28taW5wdXQtY29tYm8tYm94IFsobW9kZWwpXT1cInRyYW5zYWN0aW9uLmRlbGl2ZXJ5TWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc291cmNlXT1cImRlbGl2ZXJ5TWV0aG9kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJkZWxpdmVyeU1ldGhvZEZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9NRVRIT0QyJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cIm9uRGVsaXZlcnlNZXRob2RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9jby1pbnB1dC1jb21iby1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInREVMSVZFUllfT1BUSU9OUycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDNcIlxuICAgICAgICAgID48L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgPGNvLW11bHRpLXNlbGVjdC1saXN0XG4gICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RFTElWRVJZX09QVElPTlMnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGVsaXZlcnlPcHRpb25zXCJcbiAgICAgICAgICAgIFtmaWVsZHNdPVwiZGVsaXZlcnlPcHRpb25GaWVsZHNcIlxuICAgICAgICAgICAgWyhtb2RlbCldPVwidHJhbnNhY3Rpb24uZGVsaXZlcnlPcHRpb25zXCJcbiAgICAgICAgICAgIFtzaG93Q2hlY2tib3hdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgPjwvY28tbXVsdGktc2VsZWN0LWxpc3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8bGFiZWwgW3RleHRDb250ZW50XT1cIidSRU1BUktTJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDNcIlxuICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJ0cmFuc2FjdGlvbi5yZW1hcmtcIiBbcGxhY2Vob2xkZXJdPVwiJ1JFTUFSS1MnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFtsYWJlbF09XCInREVMSVZFUllfREFURV9GSU5BTCcgfCBsb2NhbGl6ZVwiIFsobW9kZWwpXT1cImRlbGl2ZXJ5RGF0ZUZpbmFsXCI+PC9jby1pbnB1dC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgPGNvLWlucHV0LWRhdGUgW3BsYWNlaG9sZGVyXT1cIidBU1NFTUJMWV9EQVRFJyB8IGxvY2FsaXplIFwiIFsobW9kZWwpXT1cImFzc2VtYmx5RGF0ZVwiPjwvY28taW5wdXQtZGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgPGNvLWlucHV0LXRleHQgW3BsYWNlaG9sZGVyXT1cIidUT1RBTF9BU1NFTUJMWV9USU1FJyB8IGxvY2FsaXplIFwiIFsobW9kZWwpXT1cInRvdGFsQXNzZW1ibHlUaW1lXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggW2xhYmVsXT1cIidEUk9QU0hJUE1FTlQnIHwgbG9jYWxpemVcIiBbKG1vZGVsKV09XCJkcm9wc2hpcG1lbnRcIj48L2NvLWlucHV0LWNoZWNrYm94PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtcm93XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInREVMSVZFUllfQ09TVFMnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWgzXCJcbiAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2Pnt7IGRlbGl2ZXJ5Q29zdHMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInQVNTRU1CTFlfQ09TVFMnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWgzXCJcbiAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2Pnt7IGFzc2VtYmx5Q29zdHMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdj5cbiAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInTUFSS0VUSU5HJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDNcIlxuICAgICAgICA+PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICAgIDxjby1pbnB1dC1jb21iby1ib3ggWyhtb2RlbCldPVwidHJhbnNhY3Rpb24ubWFya2V0aW5nQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc291cmNlXT1cIm1hcmtldGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cIm1hcmtldGluZ0ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ01BUktFVElORycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25NYXJrZXRpbmdDb2RlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID48L2NvLWlucHV0LWNvbWJvLWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInRyYW5zYWN0aW9uLnJlbGF0aW9uUmVmZXJlbmNlXCIgW3BsYWNlaG9sZGVyXT1cIidSRUZFUkVOQ0VfUkVMQVRJT04nIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwidHJhbnNhY3Rpb24ub3duUmVmZXJlbmNlXCIgW3BsYWNlaG9sZGVyXT1cIidPV05fUkVGRVJFTkNFJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9jby1mb3JtPlxuXG4gICAgPGNvLWRpYWxvZyBbdmlzaWJsZV09XCJhZGRMb2NhdGlvblBvcHVwXCI+XG4gICAgICA8bmctY29udGFpbmVyIGhlYWRlcj57eyAnTkVXX0xPQ0FUSU9OJyB8IGxvY2FsaXplIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxjby1mb3JtICNsb2NhdGlvbkZvcm0gKHZhbGlkU3VibWl0KT1cInNhdmVMb2NhdGlvbigpXCI+XG4gICAgICAgICAgPGNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWFkZHJlc3NcbiAgICAgICAgICAgIGxhYmVsPVwiQUREUkVTU1wiIFthZGRyZXNzXT1cIm5ld0FkZHJlc3NcIlxuICAgICAgICAgID48L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWFkZHJlc3M+XG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cbiAgICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidDQU5DRUwnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiYWRkTG9jYXRpb25Qb3B1cCA9IGZhbHNlO1wiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ1NBVkUnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwic2F2ZU5ld0xvY2F0aW9uKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jby1mb3JtPlxuICAgIDwvY28tZGlhbG9nPlxuXG4gICAgPGNvLWRpYWxvZyAjY2hhbmdlTG9jYXRpb25EaWFsb2dcbiAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cImNoYW5nZUxvY2F0aW9uUG9wdXBcIlxuICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwib25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKClcIlxuICAgICAgICAgICAgICAgKG92ZXJsYXlDbGljayk9XCJvbkNoYW5nZUxvY2F0aW9uQ2FuY2VsQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBoZWFkZXI+e3sgJ0FERFJFU1MnIHwgbG9jYWxpemUgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxjby1mb3JtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxjby1ncmlkICNhZGRyZXNzR3JpZFxuICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYWRkcmVzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2luZ0VuYWJsZWRdPVwiJ3RydWUnXCJcbiAgICAgICAgICAgICAgICAgICAgIFttYXhOdW1iZXJPZlJvd3NdPVwiJzIwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAocm93c1NlbGVjdGVkKT1cImhhbmRsZUFkZHJlc3NTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvLWdyaWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jZW50ZXJcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cbiAgICAgICAgICA8Y28tYnV0dG9uIFtsYWJlbF09XCInQUREUkVTU19BREQnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwib25BZGRMb2NhdGlvbk9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidDQU5DRUwnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwib25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvLWZvcm0+XG4gICAgPC9jby1kaWFsb2c+XG4gIGAsXG4gIHN0eWxlVXJsczogW1xuICAgIFwiLi8uLi9jaGVja291dC9jaGVja291dC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIFwiLi9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0LmNvbXBvbmVudC5zY3NzXCJcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dE92ZXJ2aWV3RGVsaXZlcnlFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIHJlYWRvbmx5IGRlbGl2ZXJ5QWRkcmVzc1R5cGU6IEFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICBwdWJsaWMgcmVhZG9ubHkgYmlsbGluZ0FkZHJlc3NUeXBlOiBBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuXG4gIEBWaWV3Q2hpbGQoXCJkZWxpdmVyeUZvcm1cIiwge3JlYWQ6IEZvcm1Db21wb25lbnR9KVxuICBwdWJsaWMgZGVsaXZlcnlGb3JtOiBGb3JtQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoXCJsb2NhdGlvbkZvcm1cIiwge3JlYWQ6IEZvcm1Db21wb25lbnR9KVxuICBwdWJsaWMgbG9jYXRpb25Gb3JtOiBGb3JtQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoXCJjaGFuZ2VMb2NhdGlvbkRpYWxvZ1wiKVxuICBwdWJsaWMgY2hhbmdlTG9jYXRpb25EaWFsb2c6IENvRGlhbG9nQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoXCJhZGRyZXNzR3JpZFwiKVxuICBwdWJsaWMgYWRkcmVzc0dyaWQ6IENvR3JpZENvbXBvbmVudDxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25JbmZvO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsaWRTdWJtaXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGludmFsaWRTdWJtaXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgZGVsaXZlcnlPcHRpb25MaXN0OiBEZWxpdmVyeU9wdGlvbltdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnM6IERlbGl2ZXJ5T3B0aW9uW10gPSBbXTtcbiAgcHVibGljIGRlbGl2ZXJ5T3B0aW9uRmllbGRzOiBUZXh0VmFsdWVDb250YWluZXIgPSB7IHRleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwiIH07XG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZHM6IERlbGl2ZXJ5TWV0aG9kW10gPSBbXTtcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kRmllbGRzOiBUZXh0VmFsdWVDb250YWluZXIgPSB7IHRleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwiIH07XG4gIHB1YmxpYyBhZGRMb2NhdGlvblBvcHVwOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjaGFuZ2VMb2NhdGlvblBvcHVwOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBuZXdBZGRyZXNzOiBBZGRyZXNzO1xuICBwdWJsaWMgcHJlZmVycmVkRGF0ZU9wdGlvbnM6IFRleHRWYWx1ZUNvbnRhaW5lcltdID0gW1xuICAgICAge3RleHQ6IFwiTk9UX0FGVEVSXCIsIHZhbHVlOiBcIj5cIiB9LFxuICAgICAge3RleHQ6IFwiTk9UX0JFRk9SRVwiLCB2YWx1ZTogXCI8XCIgfSxcbiAgICAgIHt0ZXh0OiBcIk9OX0RBVEVcIiwgdmFsdWU6IFwiPVwiIH0sXG4gICAgXTtcbiAgcHVibGljIHByZWZlcnJlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwdWJsaWMgZ2VuZGVyOiBHZW5kZXJUeXBlO1xuICBwdWJsaWMgbWFya2V0aW5nOiBNYXJrZXRpbmdbXSA9IFtdO1xuICBwdWJsaWMgbWFya2V0aW5nRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwiIH07XG4gIHB1YmxpYyBtYXJrZXRpbmdDb2RlOiBzdHJpbmc7XG4gIHB1YmxpYyBhc3NlbWJseUNvc3RzOiBudW1iZXI7XG4gIHB1YmxpYyBkZWxpdmVyeUNvc3RzOiBudW1iZXI7XG5cbiAgcHVibGljIGFkZHJlc3NlczogQWRkcmVzc1tdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZEFkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuXG4gIC8vIFRPRE86IERlemUgdmVsZGVuIG5vZyBvcG5lbWVuIGluIFRyYW5zYWN0aW9uISFcbiAgcHVibGljIGRlbGl2ZXJ5RGF0ZUZpbmFsOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBhc3NlbWJseURhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwdWJsaWMgdG90YWxBc3NlbWJseVRpbWU6IHN0cmluZyA9IFwiXCI7XG4gIHB1YmxpYyBkcm9wc2hpcG1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9hZGRyZXNzVHlwZTogQWRkcmVzc1R5cGU7XG5cbiAgcHVibGljIGdldCBiaWxsaW5nQWRkcmVzcygpOiBBZGRyZXNzIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pbnZvaWNlQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5yZWxhdGlvbiAmJlxuICAgICAgICB0aGlzLnJlbGF0aW9uLmZpcnN0QmlsbGluZ0FkZHJlc3MgJiZcbiAgICAgICAgdGhpcy5yZWxhdGlvbi5maXJzdEJpbGxpbmdBZGRyZXNzLmlzTm90RW1wdHlBZGRyZXNzKCkpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5pbnZvaWNlQWRkcmVzcyA9IHRoaXMucmVsYXRpb24uZmlyc3RCaWxsaW5nQWRkcmVzcztcbiAgICAgICAgdGhpcy5fc2V0Q291bnRyeU5hbWVUb0FkZHJlc3ModGhpcy50cmFuc2FjdGlvbi5pbnZvaWNlQWRkcmVzcykudGhlbigpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi5pbnZvaWNlQWRkcmVzcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVsaXZlcnlBZGRyZXNzKCk6IEFkZHJlc3Mge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5yZWxhdGlvbiAmJlxuICAgICAgICB0aGlzLnJlbGF0aW9uLmZpcnN0RGVsaXZlcnlBZGRyZXNzICYmXG4gICAgICAgIHRoaXMucmVsYXRpb24uZmlyc3REZWxpdmVyeUFkZHJlc3MuaXNOb3RFbXB0eUFkZHJlc3MoKSkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uQWRkcmVzcyA9IHRoaXMucmVsYXRpb24uZmlyc3REZWxpdmVyeUFkZHJlc3M7XG4gICAgICAgIHRoaXMuX3NldENvdW50cnlOYW1lVG9BZGRyZXNzKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25BZGRyZXNzKS50aGVuKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uQWRkcmVzcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVsaXZlcnlEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmRlbGl2ZXJ5RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmRlbGl2ZXJ5RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLmRlbGl2ZXJ5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGVsaXZlcnlEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kZWxpdmVyeURhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5wcmVmZXJyZWREZWxpdmVyeURhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZXdSZWxhdGlvbkFkZHJlc3MoKTogQWRkcmVzcyB7XG4gICAgaWYgKHRoaXMucmVsYXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpO1xuICAgICAgYWRkcmVzcy5hZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIGFkZHJlc3Muc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIGFkZHJlc3Muc2VxdWVuY2UgPSB0aGlzLnJlbGF0aW9uLmdldE5leHRBZGRyZXNzU2VxdWVuY2UoKTtcbiAgICAgIHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLnB1c2goYWRkcmVzcyk7XG4gICAgICByZXR1cm4gYWRkcmVzcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uQWRkcmVzcyA9PT0gdW5kZWZpbmVkICYmICF0aGlzLmRlbGl2ZXJ5QWRkcmVzcykge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uQWRkcmVzcyA9IHRoaXMuZGVsaXZlcnlBZGRyZXNzO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaW52b2ljZUFkZHJlc3MgPT09IHVuZGVmaW5lZCAmJiAhdGhpcy5iaWxsaW5nQWRkcmVzcykge1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uaW52b2ljZUFkZHJlc3MgPSB0aGlzLmJpbGxpbmdBZGRyZXNzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kZWxpdmVyeUNvc3RzID0gdGhpcy5jYWxjdWxhdGVEZWxpdmVyeUNvc3RzKCk7XG4gICAgdGhpcy5hc3NlbWJseUNvc3RzID0gdGhpcy5jYWxjdWxhdGVBc3NlbWJseUNvc3RzKCk7XG4gICAgdGhpcy5kZWxpdmVyeU1ldGhvZHMgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0RGVsaXZlcnlNZXRob2RzKCk7XG4gICAgdGhpcy5kZWxpdmVyeU9wdGlvbkxpc3QgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0RGVsaXZlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5tYXJrZXRpbmcgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0TWFya2V0aW5nQ29kZXMoKTtcbiAgICBhd2FpdCB0aGlzLm9uRGVsaXZlcnlNZXRob2RDaGFuZ2UodGhpcy50cmFuc2FjdGlvbi5kZWxpdmVyeU1ldGhvZCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmNvbHVtbnMucHVzaChcbiAgICAgIHtmaWVsZDogXCJzdHJlZXROYW1lXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIlNUUkVFVFwiKX0sXG4gICAgICB7ZmllbGQ6IFwiaG91c2VOb1wiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJIT1VTRV9OT1wiKX0sXG4gICAgICB7ZmllbGQ6IFwiaG91c2VOb0FkZGl0aW9uXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkhPVVNFX05PX0FERElUSU9OXCIpfSxcbiAgICAgIHtmaWVsZDogXCJwb3N0YWxDb2RlXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIlBPU1RBTF9DT0RFXCIpLCBhbGxvd0ZpbHRlcmluZzogZmFsc2V9LFxuICAgICAge2ZpZWxkOiBcImNpdHlcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQ0lUWVwiKX0sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsaXZlcnlGb3JtLnN1Ym1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9uRGVsaXZlcnlNZXRob2RDaGFuZ2UoZGVsaXZlcnlNZXRob2RJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGVsaXZlcnlNZXRob2Q6IERlbGl2ZXJ5TWV0aG9kW10gPSB0aGlzLnNlbGVjdERlbGl2ZXJ5TWV0aG9kQnlJZChkZWxpdmVyeU1ldGhvZElkKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRlbGl2ZXJ5TWV0aG9kID0gZGVsaXZlcnlNZXRob2RJZDtcbiAgICBpZiAoZGVsaXZlcnlNZXRob2QubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRlbGl2ZXJ5T3B0aW9ucyA9IHRoaXMuc2VsZWN0RGVsaXZlcnlPcHRpb25zQnlEZWxpdmVyeU1ldGhvZChkZWxpdmVyeU1ldGhvZFswXSk7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmRlbGl2ZXJ5T3B0aW9ucyA9IFtdO1xuICAgICAgaWYgKHRoaXMuZGVsaXZlcnlPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmRlbGl2ZXJ5T3B0aW9ucy5wdXNoKHRoaXMuZGVsaXZlcnlPcHRpb25zWzBdLmNvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU9wdGlvbnNCeURlbGl2ZXJ5TWV0aG9kKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IERlbGl2ZXJ5T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5T3B0aW9uTGlzdC5maWx0ZXIoZGVsaXZlcnlPcHRpb24gPT4gZGVsaXZlcnlNZXRob2QuZGVsaXZlcnlPcHRpb25zLmluZGV4T2YoZGVsaXZlcnlPcHRpb24uY29kZSkgIT09IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU1ldGhvZEJ5SWQoZGVsaXZlcnlNZXRob2RJZDogc3RyaW5nKTogRGVsaXZlcnlNZXRob2RbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsaXZlcnlNZXRob2RzLmZpbHRlcihkZWxpdmVyeSA9PiBkZWxpdmVyeS5jb2RlID09PSBkZWxpdmVyeU1ldGhvZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VBZGRyZXNzKGFkZHJlc3NUeXBlOiBBZGRyZXNzVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX2FkZHJlc3NUeXBlID0gYWRkcmVzc1R5cGU7XG4gICAgdGhpcy5hZGRyZXNzZXMgPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3NlcztcbiAgICB0aGlzLmNoYW5nZUxvY2F0aW9uUG9wdXAgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNhdmVOZXdMb2NhdGlvbigpOiB2b2lkIHtcbiAgICAgdGhpcy5sb2NhdGlvbkZvcm0uc3VibWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUxvY2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkTG9jYXRpb24oKTtcbiAgICB0aGlzLmNoYW5nZUxvY2F0aW9uUG9wdXAgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRMb2NhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUFkZHJlc3ModGhpcy5uZXdBZGRyZXNzKS50aGVuKCk7XG4gICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXMucHVzaCh0aGlzLm5ld0FkZHJlc3MpO1xuICAgIHRoaXMuc2VydmljZS5zYXZlUmVsYXRpb24oKS50aGVuKCk7XG4gICAgdGhpcy5hZGRMb2NhdGlvblBvcHVwID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2FkZHJlc3NUeXBlID09PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25BZGRyZXNzID0gYWRkcmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5pbnZvaWNlQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuX3NldENvdW50cnlOYW1lVG9BZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgcHVibGljIGlzRGVsaXZlcnlPcHRpb25DaGVja2VkKGRlbGl2ZXJ5T3B0aW9uSXRlbTogRGVsaXZlcnlPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMudHJhbnNhY3Rpb24uZGVsaXZlcnlPcHRpb25zLmluZGV4T2YoZGVsaXZlcnlPcHRpb25JdGVtLmNvZGUsIDApID09PSAwKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VQcmVmZXJyZWREZWxpdmVyeURhdGUyKHByZWZlcnJlZERhdGVPcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlZmVycmVkRGVsaXZlcnlEYXRlMiA9IHByZWZlcnJlZERhdGVPcHRpb247XG4gIH1cblxuICBwdWJsaWMgb25NYXJrZXRpbmdDb2RlQ2hhbmdlKG1hcmtldGluZ0NvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubWFya2V0aW5nQ29kZSA9IG1hcmtldGluZ0NvZGU7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTG9jYXRpb25Qb3B1cCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uQWRkTG9jYXRpb25Pa0NsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2FkZEFkZHJlc3ModGhpcy5fYWRkcmVzc1R5cGUpO1xuICAgIHRoaXMuYWRkTG9jYXRpb25Qb3B1cCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQWRkcmVzc1NlbGVjdGVkKHJvd3M6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzID0gKHJvd3MuZmluZCh4ID0+IHggIT09IHVuZGVmaW5lZCkpO1xuICAgIHRoaXMudXBkYXRlQWRkcmVzcyh0aGlzLnNlbGVjdGVkQWRkcmVzcyk7XG4gICAgdGhpcy5jaGFuZ2VMb2NhdGlvblBvcHVwID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZURlbGl2ZXJ5Q29zdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQXNzZW1ibHlDb3N0cygpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkQWRkcmVzcyhhZGRyZXNzVHlwZTogQWRkcmVzc1R5cGUpOiB2b2lkIHtcbiAgICB0aGlzLm5ld0FkZHJlc3MgPSBuZXcgQWRkcmVzcygpO1xuICAgIHRoaXMubmV3QWRkcmVzcy5hZGRyZXNzVHlwZSA9IGFkZHJlc3NUeXBlO1xuICAgIHRoaXMubmV3QWRkcmVzcy5zdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMubmV3QWRkcmVzcy5zZXF1ZW5jZSA9IHRoaXMucmVsYXRpb24uZ2V0TmV4dEFkZHJlc3NTZXF1ZW5jZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhZGRyZXNzLmNvdW50cnlJZCAmJiAhYWRkcmVzcy5jb3VudHJ5TmFtZSkge1xuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRDb3VudHJ5KGFkZHJlc3MuY291bnRyeUlkKTtcbiAgICAgIGFkZHJlc3MuY291bnRyeU5hbWUgPSBjb3VudHJ5LmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate, __generator } from "tslib";
|
|
2
|
-
import { Component, Input } from "@angular/core";
|
|
3
|
-
import { Address } from "@colijnit/transactionapi/build/model/address.bo";
|
|
4
|
-
import { isNill } from "@colijnit/transactionapi/build/utils/function/is-nill.function";
|
|
5
|
-
import { IOneConnectorAdapterService } from "../../../service/ione-connector-adapter.service";
|
|
6
|
-
import { StringUtils } from "../../../utils/string-utils";
|
|
7
|
-
import { DictionaryService } from "../../../service/dictionary.service";
|
|
8
|
-
var CheckoutOverviewRelationAddressComponent = /** @class */ (function () {
|
|
9
|
-
function CheckoutOverviewRelationAddressComponent(_dictionary, _connector) {
|
|
10
|
-
this._dictionary = _dictionary;
|
|
11
|
-
this._connector = _connector;
|
|
12
|
-
this.countries = [];
|
|
13
|
-
this.fields = { text: "description", value: "code" };
|
|
14
|
-
this.postalCodeCheckErrorMessage = "";
|
|
15
|
-
this._prevPostalCodeForCheck = "";
|
|
16
|
-
}
|
|
17
|
-
Object.defineProperty(CheckoutOverviewRelationAddressComponent.prototype, "address", {
|
|
18
|
-
get: function () {
|
|
19
|
-
if (this._address === undefined) {
|
|
20
|
-
this._address = new Address();
|
|
21
|
-
}
|
|
22
|
-
return this._address;
|
|
23
|
-
},
|
|
24
|
-
set: function (address) {
|
|
25
|
-
this._address = address;
|
|
26
|
-
},
|
|
27
|
-
enumerable: true,
|
|
28
|
-
configurable: true
|
|
29
|
-
});
|
|
30
|
-
CheckoutOverviewRelationAddressComponent.prototype.ngOnInit = function () {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
32
|
-
var _a;
|
|
33
|
-
return __generator(this, function (_b) {
|
|
34
|
-
switch (_b.label) {
|
|
35
|
-
case 0:
|
|
36
|
-
_a = this;
|
|
37
|
-
return [4 /*yield*/, this._connector.getCountries()];
|
|
38
|
-
case 1:
|
|
39
|
-
_a.countries = _b.sent();
|
|
40
|
-
return [2 /*return*/];
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
CheckoutOverviewRelationAddressComponent.prototype.checkForPostalCodeCheckError = function () {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
-
var postalCodeResponse;
|
|
48
|
-
return __generator(this, function (_a) {
|
|
49
|
-
switch (_a.label) {
|
|
50
|
-
case 0:
|
|
51
|
-
if (!this.address.postalCode || isNill(this.address.houseNo)) {
|
|
52
|
-
this.postalCodeCheckErrorMessage = "";
|
|
53
|
-
return [2 /*return*/];
|
|
54
|
-
}
|
|
55
|
-
if (!(this._prevPostalCodeForCheck !== this.address.postalCode || this._prevHouseNoForCheck !== this.address.houseNo)) return [3 /*break*/, 2];
|
|
56
|
-
this._prevPostalCodeForCheck = this.address.postalCode;
|
|
57
|
-
this._prevHouseNoForCheck = this.address.houseNo;
|
|
58
|
-
return [4 /*yield*/, this._connector.getPostalCodeRetrieval((this.address.postalCode ? this.address.postalCode : ""), StringUtils.ParseString(this.address.houseNo))];
|
|
59
|
-
case 1:
|
|
60
|
-
postalCodeResponse = _a.sent();
|
|
61
|
-
if (postalCodeResponse && postalCodeResponse.isBadAddress) {
|
|
62
|
-
this.postalCodeCheckErrorMessage = this._dictionary.get("UNKNOWN_ADDRESS_CHECK_IT");
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
this.postalCodeCheckErrorMessage = "";
|
|
66
|
-
this.address.streetName = postalCodeResponse.street;
|
|
67
|
-
this.address.city = postalCodeResponse.city;
|
|
68
|
-
}
|
|
69
|
-
_a.label = 2;
|
|
70
|
-
case 2: return [2 /*return*/];
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
CheckoutOverviewRelationAddressComponent.prototype.changeHouseNo = function () {
|
|
76
|
-
this.address.houseNo = Number(this.address.houseNo);
|
|
77
|
-
};
|
|
78
|
-
CheckoutOverviewRelationAddressComponent.ctorParameters = function () { return [
|
|
79
|
-
{ type: DictionaryService },
|
|
80
|
-
{ type: IOneConnectorAdapterService }
|
|
81
|
-
]; };
|
|
82
|
-
__decorate([
|
|
83
|
-
Input()
|
|
84
|
-
], CheckoutOverviewRelationAddressComponent.prototype, "label", void 0);
|
|
85
|
-
__decorate([
|
|
86
|
-
Input()
|
|
87
|
-
], CheckoutOverviewRelationAddressComponent.prototype, "address", null);
|
|
88
|
-
CheckoutOverviewRelationAddressComponent = __decorate([
|
|
89
|
-
Component({
|
|
90
|
-
selector: "checkout-overview-relation-address",
|
|
91
|
-
template: "\n <label [textContent]=\"label | localize\"\n class=\"checkout-label-h3\"\n ></label>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.postalCode\"\n [placeholder]=\"'POSTAL_CODE' | localize\"\n (blur)=\"checkForPostalCodeCheckError()\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.houseNo\"\n [placeholder]=\"'HOUSE_NO' | localize\"\n (blur)=\"checkForPostalCodeCheckError()\"\n (modelChange) = \"changeHouseNo()\"\n required\n ></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.houseNoAddition\"\n [placeholder]=\"'HOUSE_NO_ADDITION' | localize\"\n ></co-input-text>\n </div>\n </div>\n <div>\n <div class=\"default-flex-row\">\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.streetName\" [placeholder]=\"'STREET' | localize\" required></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-text [(model)]=\"address.city\" [placeholder]=\"'CITY' | localize\" required></co-input-text>\n </div>\n <div class=\"default-flex-column\">\n <co-input-combo-box [(model)]=\"address.countryId\"\n [source]=\"countries\"\n [fields]=\"fields\"\n [placeholder]=\"'COUNTRY'| localize\"\n [required]=\"true\"\n ></co-input-combo-box>\n </div>\n </div>\n </div>\n ",
|
|
92
|
-
styles: ["body,html{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.overview-header .overview-step-nr{border-radius:50%;color:#f7fafa;background-color:#2b60a7}.flex-center,.step-content-customer,.step-content-delivery{display:flex}.flex-center,.step-content-delivery{flex-direction:row}.step-content-customer{flex-direction:column}.flex-center{align-items:center!important;justify-content:center!important;margin:10px 0}.step-content-customer,.step-content-delivery{padding:20px;background-color:#fff}.triangle{border-radius:3px}.full-width{width:100%}.checkout-viewport{max-width:60%;margin-left:20%}.mat-label{font-family:Montserrat,Arial,Helvetica,sans-serif}.default-flex-row{flex-direction:row;box-sizing:border-box;-moz-column-gap:20px;column-gap:20px;display:flex}.default-flex-column{display:flex;flex-direction:column;width:200px}.privacy-row{display:flex;flex-direction:row;margin-bottom:20px}.privacy-column-left{display:flex;flex-direction:column;min-width:150px;max-width:150px;overflow-wrap:break-word}.privacy-column-right{display:flex;flex-direction:row;margin-left:50px}.checkout-label-h2{display:block;margin-top:1em;margin-bottom:1em;font-size:18px;font-weight:700}.checkout-label-h3{display:block;margin-top:1em;margin-bottom:1em;font-size:14px;font-weight:700}co-input-radio-button{margin-left:16px}.checkout-overview h2{font-size:18px;font-weight:700}.checkout-overview h3{font-size:15px}mat-horizontal-stepper{position:sticky;top:0;z-index:30}::ng-deep .mat-horizontal-content-container{display:none}::ng-deep .step-wrapper{width:auto;background:rgba(255,255,255,.25)}::ng-deep .step-wrapper button-colijn{margin-top:20px}::ng-deep .step-wrapper.payment{align-items:center!important;justify-content:left!important}.overview-header{background:rgba(255,255,255,.25);border-top-left-radius:5px;border-top-right-radius:5px}.overview-header .overview-step-nr{width:20px;height:20px;text-align:center;font-weight:700}.overview-body{padding:30px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.overview-body .contact-option-value{align-self:center}.overview-header-label,.overview-label{font-weight:700}ul.cart-buttons{margin-top:20px;margin-bottom:20px;display:flex;justify-content:space-between;flex-wrap:nowrap;list-style-type:none}ul.cart-buttons>li{padding-left:11px;padding-right:11px;display:flex;align-items:center;justify-content:center;flex-grow:0;flex-shrink:0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;height:40px;background-color:#f7fafa;cursor:pointer;font-size:15px;color:#2b60a7;border:1px solid #dce4ea;border-radius:5px;opacity:1}ul.cart-buttons>li a{white-space:nowrap}"]
|
|
93
|
-
})
|
|
94
|
-
], CheckoutOverviewRelationAddressComponent);
|
|
95
|
-
return CheckoutOverviewRelationAddressComponent;
|
|
96
|
-
}());
|
|
97
|
-
export { CheckoutOverviewRelationAddressComponent };
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvdHJhbnNhY3Rpb24vIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50L2NoZWNrb3V0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWFkZHJlc3MvY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tYWRkcmVzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUV4RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDdEYsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFFNUYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBc0R0RTtJQXFCRSxrREFDVSxXQUE4QixFQUM5QixVQUF1QztRQUR2QyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBNkI7UUFMMUMsY0FBUyxHQUFjLEVBQUUsQ0FBQztRQUMxQixXQUFNLEdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQU94RCxnQ0FBMkIsR0FBVyxFQUFFLENBQUM7UUFFeEMsNEJBQXVCLEdBQVcsRUFBRSxDQUFDO0lBSjFDLENBQUM7SUFsQkosc0JBQVcsNkRBQU87YUFJbEI7WUFDRSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7YUFDL0I7WUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzthQVZELFVBQW1CLE9BQWdCO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUM7OztPQUFBO0lBd0JLLDJEQUFRLEdBQWQ7Ozs7Ozt3QkFDRSxLQUFBLElBQUksQ0FBQTt3QkFBYSxxQkFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxFQUFBOzt3QkFBckQsR0FBSyxTQUFTLEdBQUcsU0FBb0MsQ0FBQzs7Ozs7S0FDdkQ7SUFFWSwrRUFBNEIsR0FBekM7Ozs7Ozt3QkFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7NEJBQzVELElBQUksQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUM7NEJBQ3RDLHNCQUFPO3lCQUNSOzZCQUVHLENBQUEsSUFBSSxDQUFDLHVCQUF1QixLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQSxFQUE5Ryx3QkFBOEc7d0JBQ2hILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO3dCQUNjLHFCQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNwSyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQTs7d0JBRHhDLGtCQUFrQixHQUF1QyxTQUNqQjt3QkFDOUMsSUFBSSxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUU7NEJBQ3pELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO3lCQUNyRjs2QkFBTTs0QkFDTCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDOzRCQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7NEJBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQzt5QkFDN0M7Ozs7OztLQUVKO0lBRU0sZ0VBQWEsR0FBcEI7UUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDOztnQkFyQ3NCLGlCQUFpQjtnQkFDbEIsMkJBQTJCOztJQXBCakQ7UUFEQyxLQUFLLEVBQUU7MkVBQ2E7SUFHckI7UUFEQyxLQUFLLEVBQUU7MkVBR1A7SUFSVSx3Q0FBd0M7UUFuRHBELFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxvQ0FBb0M7WUFDOUMsUUFBUSxFQUFFLCtqRUE0Q1A7O1NBSUosQ0FBQztPQUNXLHdDQUF3QyxDQTREcEQ7SUFBRCwrQ0FBQztDQUFBLEFBNURELElBNERDO1NBNURZLHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ib1wiO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm9cIjtcbmltcG9ydCB7aXNOaWxsfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb25cIjtcbmltcG9ydCB7SU9uZUNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9pb25lLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcG9zdGFsLWNvZGUtcmV0cmlldmFsLW91dHB1dC1wYXJhbXNcIjtcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gXCIuLi8uLi8uLi91dGlscy9zdHJpbmctdXRpbHNcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWFkZHJlc3NcIixcbiAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCJsYWJlbCB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtaDNcIlxuICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cImFkZHJlc3MucG9zdGFsQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUE9TVEFMX0NPREUnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja0ZvclBvc3RhbENvZGVDaGVja0Vycm9yKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJhZGRyZXNzLmhvdXNlTm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0hPVVNFX05PJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tGb3JQb3N0YWxDb2RlQ2hlY2tFcnJvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKSA9IFwiY2hhbmdlSG91c2VObygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwiYWRkcmVzcy5ob3VzZU5vQWRkaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0hPVVNFX05PX0FERElUSU9OJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwiYWRkcmVzcy5zdHJlZXROYW1lXCIgW3BsYWNlaG9sZGVyXT1cIidTVFJFRVQnIHwgbG9jYWxpemVcIiByZXF1aXJlZD48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1mbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cImFkZHJlc3MuY2l0eVwiIFtwbGFjZWhvbGRlcl09XCInQ0lUWScgfCBsb2NhbGl6ZVwiIHJlcXVpcmVkPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWNvbWJvLWJveCBbKG1vZGVsKV09XCJhZGRyZXNzLmNvdW50cnlJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc291cmNlXT1cImNvdW50cmllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NPVU5UUlknfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY29tYm8tYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICBzdHlsZVVybHM6IFtcbiAgICBcIi4vLi4vY2hlY2tvdXQvY2hlY2tvdXQuY29tcG9uZW50LnNjc3NcIlxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdSZWxhdGlvbkFkZHJlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKSB7XG4gICAgdGhpcy5fYWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZHJlc3MoKTogQWRkcmVzcyB7XG4gICAgaWYgKHRoaXMuX2FkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fYWRkcmVzcyA9IG5ldyBBZGRyZXNzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgY291bnRyaWVzOiBDb3VudHJ5W10gPSBbXTtcbiAgcHVibGljIGZpZWxkczogT2JqZWN0ID0geyB0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcImNvZGVcIiB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIF9jb25uZWN0b3I6IElPbmVDb25uZWN0b3JBZGFwdGVyU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIHBvc3RhbENvZGVDaGVja0Vycm9yTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcblxuICBwcml2YXRlIF9wcmV2UG9zdGFsQ29kZUZvckNoZWNrOiBzdHJpbmcgPSBcIlwiO1xuICBwcml2YXRlIF9wcmV2SG91c2VOb0ZvckNoZWNrOiBudW1iZXI7XG4gIHByaXZhdGUgX2FkZHJlc3M6IEFkZHJlc3M7XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb3VudHJpZXMgPSBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0Q291bnRyaWVzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tGb3JQb3N0YWxDb2RlQ2hlY2tFcnJvcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRkcmVzcy5wb3N0YWxDb2RlIHx8IGlzTmlsbCh0aGlzLmFkZHJlc3MuaG91c2VObykpIHtcbiAgICAgIHRoaXMucG9zdGFsQ29kZUNoZWNrRXJyb3JNZXNzYWdlID0gXCJcIjtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcHJldlBvc3RhbENvZGVGb3JDaGVjayAhPT0gdGhpcy5hZGRyZXNzLnBvc3RhbENvZGUgfHwgdGhpcy5fcHJldkhvdXNlTm9Gb3JDaGVjayAhPT0gdGhpcy5hZGRyZXNzLmhvdXNlTm8pIHtcbiAgICAgIHRoaXMuX3ByZXZQb3N0YWxDb2RlRm9yQ2hlY2sgPSB0aGlzLmFkZHJlc3MucG9zdGFsQ29kZTtcbiAgICAgIHRoaXMuX3ByZXZIb3VzZU5vRm9yQ2hlY2sgPSB0aGlzLmFkZHJlc3MuaG91c2VObztcbiAgICAgIGNvbnN0IHBvc3RhbENvZGVSZXNwb25zZTogR2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtcyA9IGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5nZXRQb3N0YWxDb2RlUmV0cmlldmFsKCh0aGlzLmFkZHJlc3MucG9zdGFsQ29kZSA/IHRoaXMuYWRkcmVzcy5wb3N0YWxDb2RlIDogXCJcIiksXG4gICAgICBTdHJpbmdVdGlscy5QYXJzZVN0cmluZyh0aGlzLmFkZHJlc3MuaG91c2VObykpO1xuICAgICAgaWYgKHBvc3RhbENvZGVSZXNwb25zZSAmJiBwb3N0YWxDb2RlUmVzcG9uc2UuaXNCYWRBZGRyZXNzKSB7XG4gICAgICAgIHRoaXMucG9zdGFsQ29kZUNoZWNrRXJyb3JNZXNzYWdlID0gdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJVTktOT1dOX0FERFJFU1NfQ0hFQ0tfSVRcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvc3RhbENvZGVDaGVja0Vycm9yTWVzc2FnZSA9IFwiXCI7XG4gICAgICAgIHRoaXMuYWRkcmVzcy5zdHJlZXROYW1lID0gcG9zdGFsQ29kZVJlc3BvbnNlLnN0cmVldDtcbiAgICAgICAgdGhpcy5hZGRyZXNzLmNpdHkgPSBwb3N0YWxDb2RlUmVzcG9uc2UuY2l0eTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlSG91c2VObygpOiB2b2lkIHtcbiAgICB0aGlzLmFkZHJlc3MuaG91c2VObyA9IE51bWJlcih0aGlzLmFkZHJlc3MuaG91c2VObyk7XG4gIH1cbn1cbiJdfQ==
|