@hmcts/ccpay-web-component 6.2.3-beta6 → 6.2.3-beta7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/case-transactions/case-transactions.component.mjs +6 -4
- package/esm2022/lib/components/payment-view/payment-view.component.mjs +11 -2
- package/esm2022/lib/components/service-request/service-request.component.mjs +11 -2
- package/fesm2022/hmcts-ccpay-web-component.mjs +25 -5
- package/fesm2022/hmcts-ccpay-web-component.mjs.map +1 -1
- package/lib/components/case-transactions/case-transactions.component.d.ts +1 -1
- package/lib/components/payment-view/payment-view.component.d.ts +1 -0
- package/lib/components/service-request/service-request.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -337,12 +337,21 @@ export class ServiceRequestComponent {
|
|
|
337
337
|
}
|
|
338
338
|
chkIsAddRemissionBtnEnable(fee) {
|
|
339
339
|
if (fee !== null && fee !== undefined) {
|
|
340
|
-
return fee.add_remission && fee.remission_enable;
|
|
340
|
+
return fee.add_remission && fee.remission_enable && this.isTheCurrentRefundInProcessForThisFee(fee);
|
|
341
341
|
}
|
|
342
342
|
else {
|
|
343
343
|
return false;
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
|
+
// This method is going to check if the current refund has been rejected.
|
|
347
|
+
// If this is the case the button should be disable.
|
|
348
|
+
isTheCurrentRefundInProcessForThisFee(fee) {
|
|
349
|
+
// No refunds
|
|
350
|
+
if (this.paymentLibComponent.refunds == null || this.paymentLibComponent.refunds.length === 0) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
return !this.isTheCurrentRefundRejectedForTheFee(fee.id.toString());
|
|
354
|
+
}
|
|
346
355
|
resetOrderData() {
|
|
347
356
|
this.OrderslistService.setOrderRef(null);
|
|
348
357
|
this.OrderslistService.setorderCCDEvent(null);
|
|
@@ -517,4 +526,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
517
526
|
}], goToServiceRquestComponent: [{
|
|
518
527
|
type: Output
|
|
519
528
|
}] } });
|
|
520
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLXJlcXVlc3Qvc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLXJlcXVlc3Qvc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVFQUF1RTtBQUN2RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFPcEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMseUJBQXlCLEVB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Yy9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQge0lSZW1pc3Npb259IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlbWlzc2lvbic7XG5pbXBvcnQge0lQYXltZW50Vmlld30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudFZpZXcnO1xuaW1wb3J0IHtJT3JkZXJSZWZlcmVuY2VGZWV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSU9yZGVyUmVmZXJlbmNlRmVlJztcbmltcG9ydCB7SUZlZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQYXltZW50Vmlld1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge09yZGVyc2xpc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtJUmVmdW5kQ29udGFjdERldGFpbHN9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZENvbnRhY3REZXRhaWxzJztcbmltcG9ydCB7UG9zdFJlZnVuZFJldHJvUmVtaXNzaW9ufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1Bvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbic7XG5pbXBvcnQge0FkZFJlbWlzc2lvbkNvbXBvbmVudH0gZnJvbSAnLi4vYWRkLXJlbWlzc2lvbi9hZGQtcmVtaXNzaW9uLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UGF5bWVudFZpZXdDb21wb25lbnR9IGZyb20gJy4uL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7Q29udGFjdERldGFpbHNDb21wb25lbnR9IGZyb20gJy4uL2NvbnRhY3QtZGV0YWlscy9jb250YWN0LWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7Tm90aWZpY2F0aW9uUHJldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLXByZXZpZXcvbm90aWZpY2F0aW9uLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7Q2FzZVRyYW5zYWN0aW9uc0NvbXBvbmVudH0gZnJvbSAnLi4vY2FzZS10cmFuc2FjdGlvbnMvY2FzZS10cmFuc2FjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7Q2NkSHlwaGVuc1BpcGV9IGZyb20gJy4uLy4uL3BpcGVzL2NjZC1oeXBoZW5zLnBpcGUnO1xuaW1wb3J0IHtDYXBpdGFsaXplUGlwZX0gZnJvbSAnLi4vLi4vcGlwZXMvY2FwaXRhbGl6ZS5waXBlJztcbmltcG9ydCB7UnB4VHJhbnNsYXRpb25Nb2R1bGV9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcblxudHlwZSBQYXltZW50TGliQWxpYXMgPSBQYXltZW50TGliQ29tcG9uZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1zZXJ2aWNlLXJlcXVlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ1NFUlZJQ0VfUkVRVUVTVCcsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlcnZpY2VSZXF1ZXN0Q29tcG9uZW50KSB9XSxcbiAgaW1wb3J0czogW1xuICAgIGZvcndhcmRSZWYoKCkgPT4gQWRkUmVtaXNzaW9uQ29tcG9uZW50KSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBQYXltZW50Vmlld0NvbXBvbmVudCksXG4gICAgZm9yd2FyZFJlZigoKSA9PiBDb250YWN0RGV0YWlsc0NvbXBvbmVudCksXG4gICAgZm9yd2FyZFJlZigoKSA9PiBOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50KSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENhc2VUcmFuc2FjdGlvbnNDb21wb25lbnQpLFxuICAgIENjZEh5cGhlbnNQaXBlLFxuICAgIENhcGl0YWxpemVQaXBlLFxuICAgIFJweFRyYW5zbGF0aW9uTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZVJlcXVlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUlJPTEVTJykgTE9HR0VESU5VU0VSUk9MRVM6IHN0cmluZ1tdO1xuICBASW5wdXQoJ3ZpZXdTdGF0dXMnKSB2aWV3U3RhdHVzOiBzdHJpbmc7XG4gIEBJbnB1dCgnb3JkZXJEZXRhaWwnKSBvcmRlckRldGFpbDogYW55W107XG4gIEBJbnB1dCgnb3JkZXJSZWYnKSBvcmRlclJlZjogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyU3RhdHVzJykgb3JkZXJTdGF0dXM6IHN0cmluZztcbiAgQElucHV0KCdvcmRlclBhcnR5Jykgb3JkZXJQYXJ0eTogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyQ3JlYXRlZCcpIG9yZGVyQ3JlYXRlZDogRGF0ZTtcbiAgQElucHV0KCdvcmRlckNDREV2ZW50Jykgb3JkZXJDQ0RFdmVudDogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyRmVlc1RvdGFsJykgb3JkZXJGZWVzVG90YWw6IG51bWJlcjtcbiAgQElucHV0KCdvcmRlclRvdGFsUGF5bWVudHMnKSBvcmRlclRvdGFsUGF5bWVudHM6IG51bWJlcjtcbiAgQElucHV0KCdvcmRlclJlbWlzc2lvblRvdGFsJykgb3JkZXJSZW1pc3Npb25Ub3RhbDogbnVtYmVyO1xuICBASW5wdXQoJ3BheW1lbnRHcm91cExpc3QnKSBwYXltZW50R3JvdXBMaXN0OiBJUGF5bWVudEdyb3VwO1xuICBASW5wdXQoJ3Rha2VQYXltZW50JykgdGFrZVBheW1lbnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgnY2NkQ2FzZU51bWJlcicpIGNjZENhc2VOdW1iZXI6IGJvb2xlYW47XG4gIEBJbnB1dChcImlzU2VydmljZVJlcXVlc3RcIikgaXNTZXJ2aWNlUmVxdWVzdDogc3RyaW5nO1xuICBAT3V0cHV0KCkgZ29Ub1NlcnZpY2VScXVlc3RDb21wb25lbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHZpZXdDb21wU3RhdHVzO1xuICBzZXJ2aWNlcmVxdWVzdDogc3RyaW5nO1xuICBwYXltZW50VHlwZTogc3RyaW5nO1xuICBleGNSZWZlcmVuY2U6IHN0cmluZztcbiAgcGF5bWVudEdyb3VwczogYW55W10gPSBbXTtcbiAgcGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgbm9uUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgYWxsUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgcmVtaXNzaW9uczogSVJlbWlzc2lvbltdID0gW107XG4gIHBheW1lbnRGZWVzOiBJRmVlW107XG4gIGZlZXM6IGFueTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHRvdGFsRmVlczogbnVtYmVyO1xuICB0b3RhbFBheW1lbnRzOiBudW1iZXI7XG4gIHRvdGFsTm9uT2ZmUGF5bWVudHM6IG51bWJlcjtcbiAgdG90YWxSZW1pc3Npb25zOiBudW1iZXI7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmc7XG4gIGRjbk51bWJlcjogc3RyaW5nO1xuICBwYXltZW50UmVmOiBzdHJpbmc7XG4gIGlzVHVybk9mZjogYm9vbGVhbjtcbiAgaXNSZWZ1bmRSZW1pc3Npb246IGJvb2xlYW4gPSB0cnVlO1xuICBpc1N0cmF0ZWdpY0ZpeEVuYWJsZTogYm9vbGVhbjtcbiAgaXNBZGRGZWVCdG5FbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNFeGNlcHRpb25SZWNvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVbnByb2Nlc3NlZFJlY29yZFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGV4Y2VwdGlvblJlY29yZFJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0FueUZlZUdyb3VwQXZpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0hpc3RvcmljR3JvdXBBdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNCdWxrU2NhbkVuYWJsZTtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIGlzUmVtb3ZlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmVlSWQ6IElGZWU7XG4gIGNsQW1vdW50RHVlOiBudW1iZXIgPSAwO1xuICB1bnByb2Nlc3NlZFJlY29yZENvdW50OiBudW1iZXI7XG4gIGlzRmVlUmVjb3Jkc0V4aXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbFJlZnVuZEFtb3VudDogTnVtYmVyO1xuICBjYXNlVHlwZTogU3RyaW5nO1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmdW5kQW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnQ6IElQYXltZW50O1xuICBwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXA7XG4gIHBheW1lbnRWaWV3OiBJUGF5bWVudFZpZXc7XG5cbiAgaXNBZGRSZW1pc3Npb25FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3JkZXJSZW1pc3Npb25EZXRhaWxzOiBhbnlbXSA9IFtdO1xuICBvcmRlckxldmVsRmVlczogSU9yZGVyUmVmZXJlbmNlRmVlW10gPSBbXTtcbiAgY3BvRGV0YWlsczogYW55IFtdPSBbXTtcbiAgc2VydmljZVJlcXVlc3RWYWx1ZTogc3RyaW5nO1xuICBvcmRlckFkZEJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgaXNGcm9tUGF5bWVudERldGFpbFBhZ2U6IGJvb2xlYW47XG4gIGNvbnRhY3REZXRhaWxzT2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHNcbiAgbm90aWZpY2F0aW9uOiBhbnk7XG4gIGlzQ1BPRG93bjogYm9vbGVhbjtcbiAgdGVzdDogYm9vbGVhbjtcbiAgaXNQQkE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJc3N1ZVJlZnVuZkJ0bkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWZ1bmRSZW1pc3Npb25CdG5FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsb3dlZFJvbGVzVG9BY2Nlc3NSZWZ1bmQgPSBbJ3BheW1lbnRzLXJlZnVuZC1hcHByb3ZlcicsICdwYXltZW50cy1yZWZ1bmQnXTtcbiAgaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlOiBib29sZWFuO1xuICBuYXZpZ2F0aW9ucGFnZTogc3RyaW5nO1xuICByZW1pc3Npb25GZWVBbXQ6IG51bWJlcjtcbiAgaXNDb250aW51ZUJ0bkRpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGdWxseVJlZnVuZDogYm9vbGVhbjtcbiAgdGVtcGxhdGVJbnN0cnVjdGlvblR5cGU6IHN0cmluZztcbiAgbm90aWZpY2F0aW9uUHJldmlldzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdQQVlNRU5UX0xJQicpIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkFsaWFzLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNUdXJuT2ZmID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTVFVSTk9GRjtcbiAgICB0aGlzLmlzU2VydmljZVJlcXVlc3QgPSAnZmFsc2UnO1xuICAgIGlmICh0aGlzLnZpZXdTdGF0dXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UpIHtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJSZWZzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyUmVmID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyQ0NERXZlbnRzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyQ0NERXZlbnQgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJDcmVhdGVkcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckNyZWF0ZWQgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJEZXRhaWwoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJEZXRhaWwgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJQYXJ0eXMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJQYXJ0eSA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlclJlbWlzc2lvblRvdGFscygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclJlbWlzc2lvblRvdGFsID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyRmVlc1RvdGFscygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckZlZXNUb3RhbCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvb3JkZXJUb3RhbFBheW1lbnRzcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclRvdGFsUGF5bWVudHMgPSBkYXRhKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UKSB7XG4gICAgICB0aGlzLmlzU2VydmljZVJlcXVlc3QgPSAnZmFsc2UnO1xuICAgIH1cblxuICB9XG4gIGdvVG9TZXJ2aWNlUmVxdWVzdFBhZ2UoKSB7XG4gICAgdGhpcy5nb1RvU2VydmljZVJxdWVzdENvbXBvbmVudC5lbWl0KCk7XG4gIH1cblxuICBnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UoJ3NlcnZpY2VyZXF1ZXN0cGFnZScpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0aXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKGZhbHNlKTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUYWtlUGF5bWVudCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVDtcbiAgICBpZiAodGhpcy50YWtlUGF5bWVudCkge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVGFrZVBheW1lbnQgPSB0aGlzLnRha2VQYXltZW50O1xuICAgIH1cbiAgICAvL3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRVJWSUNFUkVRVUVTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5pc1NlcnZpY2VSZXF1ZXN0ICE9PSAnZmFsc2UnKSB7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucmVzZXRPcmRlckRhdGEoKTtcblxuICAgIC8vIENoZWNrIHdlIG9uIFhVSVxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL2Nhc2VzL2Nhc2UtZGV0YWlscy8nKSkge1xuICAgICAgLy8gVXNlIGNjcGF5LWNhc2UtdHJhbnNhY3Rpb25zIGNvbXBvbmVudFxuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVsb2FkIFBheWJ1YmJsZSBjYXNlLXRyYW5zYWN0aW9ucyBwYWdlLlxuICAgICAgbGV0IHBhcnRVcmwgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA/ICcmaXNCdWxrU2Nhbm5pbmc9RW5hYmxlJyA6ICcmaXNCdWxrU2Nhbm5pbmc9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkYgPyAnJmlzVHVybk9mZj1FbmFibGUnIDogJyZpc1R1cm5PZmY9RGlzYWJsZSc7XG4gICAgICBpZiAodGhpcy5pc1NlcnZpY2VSZXF1ZXN0ID09PSAnZmFsc2UnKSB7XG4gICAgICAgIHBhcnRVcmwgKz0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID8gJyZ0YWtlUGF5bWVudD10cnVlJyA6ICcmdGFrZVBheW1lbnQ9ZmFsc2UnO1xuICAgICAgfVxuICAgICAgcGFydFVybCArPSB0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlID8gJyZpc1N0Rml4RW5hYmxlPUVuYWJsZScgOiAnJmlzU3RGaXhFbmFibGU9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9IHRoaXMuaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJyA/ICcmc2VydmljZXJlcXVlc3Q9dHJ1ZScgOiAnJnNlcnZpY2VyZXF1ZXN0PWZhbHNlJztcbiAgICAgIHBhcnRVcmwgKz0gYCZjYXNlVHlwZT0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRX1gO1xuICAgICAgY29uc3QgdXJsID0gYC9wYXltZW50LWhpc3RvcnkvJHt0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSfT92aWV3PWNhc2UtdHJhbnNhY3Rpb25zJnNlbGVjdGVkT3B0aW9uPSR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFTEVDVEVEX09QVElPTn0ke3BhcnRVcmx9YDtcbiAgICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XG4gICAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbiAgYWRkUmVtaXNzaW9uKGZlZTogSUZlZSkge1xuICAgIGlmICh0aGlzLmNoa0lzQWRkUmVtaXNzaW9uQnRuRW5hYmxlKGZlZSkpIHtcbiAgICAgIHRoaXMuZmVlSWQgPSBmZWU7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWRkcmVtaXNzaW9uJztcbiAgICAgIHRoaXMucGF5bWVudCA9IHRoaXMub3JkZXJEZXRhaWxbMF0ucGF5bWVudHNbMF07XG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyh0aGlzLm9yZGVyRGV0YWlsWzBdLnBheW1lbnRzWzBdLnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudEdyb3VwO1xuXG4gICAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAgIChwYXltZW50R3JvdXBPYmogPT4gcGF5bWVudEdyb3VwT2JqWydyZWZlcmVuY2UnXS5pbmNsdWRlcyh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSkpO1xuICAgICAgICAgIHRoaXMucGF5bWVudCA9IHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdO1xuXG4gICAgICAgICAgLy8gIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAgIC8vICB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuXG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csIFwiXCIpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJlZnVuZEZvclJlbWlzc2lvbihwYXltZW50OiBJUGF5bWVudCwgcmVtaXNzaW9uOiBJUmVtaXNzaW9uW10sIGZlZXM6IGFueSkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHBheW1lbnQucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRHcm91cCA9IHBheW1lbnRHcm91cDtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9iai5yZWZlcmVuY2UgPT09IHBheW1lbnQucmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgIHRoaXMucmVtaXNzaW9ucyA9IHJlbWlzc2lvbjtcbiAgICAgICAgdGhpcy5yZW1pc3Npb25GZWVBbXQgPSBmZWVzLmZpbHRlcihkYXRhID0+IGRhdGEuY29kZSA9PT0gdGhpcy5yZW1pc3Npb25zWydmZWVfY29kZSddKVswXS5uZXRfYW1vdW50O1xuICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWRkcmVmdW5kZm9ycmVtaXNzaW9uJztcbiAgICAgICAgLy8gY29uc3QgcGF5bWVudEFsbG9jYXRpb24gPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5wYXltZW50X2FsbG9jYXRpb247XG4gICAgICAgIC8vIHRoaXMuaXNTdGF0dXNBbGxvY2F0ZWQgPSBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPiAwICYmIHBheW1lbnRBbGxvY2F0aW9uWzBdLmFsbG9jYXRpb25fc3RhdHVzID09PSAnQWxsb2NhdGVkJyB8fCBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPT09IDA7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICApO1xuICB9XG4gIGNhbmNlbFJlbW92YWwoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICB9XG5cbiAgcmVtb3ZlRmVlKGZlZTogYW55KSB7XG4gICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kZWxldGVGZWVGcm9tUGF5bWVudEdyb3VwKGZlZSkuc3Vic2NyaWJlKFxuICAgICAgKHN1Y2Nlc3M6IGFueSkgPT4ge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGlzc3VlUmVmdW5kKHBheW1lbnQ6IElQYXltZW50KSB7XG4gICAgaWYgKHBheW1lbnQgIT09IG51bGwgJiYgcGF5bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5jaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQpKSB7XG4gICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHBheW1lbnQucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cyA9IHBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAgICAgKHBheW1lbnRHcm91cE9iaiA9PiBwYXltZW50R3JvdXBPYmpbJ3JlZmVyZW5jZSddLmluY2x1ZGVzKHBheW1lbnQucmVmZXJlbmNlKSk7XG5cblxuICAgICAgICAgICAgLy8gTm8gcmVmdW5kIGFuZCBubyBvdmVyIHBheW1lbnQgLS0+IHNob3dJc3N1ZVJlZnVuZFBhZ2UoKVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA9PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50R3JvdXAsIHBheW1lbnQpO1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE5vIHJlZnVuZCBhbmQgb3ZlciBwYXltZW50IC0tPiBzaG93T3ZlclBheW1lbnQoKVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93T3ZlclBheW1lbnQocGF5bWVudEdyb3VwLCBwYXltZW50KTtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZWZ1bmRzID4gMCAgYW5kIG92ZXJQYXltZW50ID09IDAgLS0tPiByZWZ1bmRzIGFjY2VwdGVkLiBzaG93SXNzdWVSZWZ1bmRQYWdlKClcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA9PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50R3JvdXAsIHBheW1lbnQpO1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZnVuZHMgPiAwIGFuZCBvdmVyUGF5bWVudCA+IDAgLS0+IHJlZnVuZHMgaW4gcHJvY2VzcyBvciBSZWplY3RlZC5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA+IDApIHtcblxuICAgICAgICAgICAgICAvLyByZWplY3RlZCBieSBmZWUgcmVmdW5kcyA9PT0gcmVmdW5kcyBieSBmZWUgaXQgbWVhbnMgdGhhdCByZWZ1bmQgZm9yIHRoZSBjdXJyZW50IGZlZSBpcyByZWplY3RlZC5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUocGF5bWVudEdyb3VwLmZlZXMuYXQoMCkuaWQudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPdmVyUGF5bWVudChwYXltZW50R3JvdXAsIHBheW1lbnQpO1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIHJlZnVuZHMgaW4gcHJvY2VzcyBTZW50IGZvciBhcHByb3ZhbCxBcHByb3ZlZFxuICAgICAgICAgICAgICB0aGlzLnNob3dJc3N1ZVJlZnVuZFBhZ2UocGF5bWVudEdyb3VwLCBwYXltZW50KTtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUoZmVlQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgcmVmdW5kc0J5RmVlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZHMuZmlsdGVyKHJlZnVuZCA9PiByZWZ1bmQuZmVlX2lkcyA9PT0gZmVlQ29kZSk7XG4gICAgbGV0IHJlZnVuZHNCeUZlZUFuZFJlamVjdGVkID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZHMuZmlsdGVyKHJlZnVuZCA9PiByZWZ1bmQucmVmdW5kX3N0YXR1cy5uYW1lID09PSAnUmVqZWN0ZWQnKTtcblxuICAgIC8vIFJlZnVuZHMgPiAwICBhbmQgb3ZlclBheW1lbnQgLS0+IHJlZnVuZHMgaW4gcHJvY2VzcyBvciBSZWplY3RlZC5cbiAgICBpZiAocmVmdW5kc0J5RmVlLmxlbmd0aCA9PT0gcmVmdW5kc0J5RmVlQW5kUmVqZWN0ZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNBbnlSZWZ1bmRzRm9yVGhpc0Nhc2UoKXtcbiAgICByZXR1cm4gKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRzICE9IG51bGwpICYmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kcy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHNob3dPdmVyUGF5bWVudChwYXltZW50Z3JwOiBJUGF5bWVudEdyb3VwLCBwYXltZW50KSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJyc7XG4gICAgdGhpcy5wYXltZW50ID0gcGF5bWVudDtcbiAgICB0aGlzLnBheW1lbnRHcm91cExpc3QgPSBwYXltZW50Z3JwO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlcnBheW1lbnQnO1xuICB9XG5cbiAgc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50Z3JwOiBJUGF5bWVudEdyb3VwLCBwYXltZW50KSB7XG5cblxuICAgIHRoaXMudmlld1N0YXR1cyA9ICdpc3N1ZXJlZnVuZCc7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICcnO1xuICAgIHRoaXMucGF5bWVudEZlZXMgPSBwYXltZW50Z3JwLmZlZXM7XG4gICAgdGhpcy5wYXltZW50ID0gcGF5bWVudDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcblxuXG4gICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50Z3JwO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdpc3N1ZXJlZnVuZCc7XG4gICAgdGhpcy5pc1JlZnVuZFJlbWlzc2lvbiA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0QmFsYW5jZVRvQmVQYWlkKCl7XG4gICAgcmV0dXJuIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5vdmVyUGF5bWVudEFtb3VudFxuICB9XG5cblxuICBnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcsIHBheW1lbnRNZXRob2Q6IHN0cmluZykge1xuICAgIHRoaXMuZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHsgcGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50UmVmZXJlbmNlLCBwYXltZW50TWV0aG9kIH0pO1xuICB9XG5cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHBheW1lbnRHcm91cDogYW55KSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRNZXRob2QgPSBwYXltZW50R3JvdXAucGF5bWVudE1ldGhvZDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlID0gcGF5bWVudEdyb3VwLnBheW1lbnRHcm91cFJlZmVyZW5jZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSA9IHBheW1lbnRHcm91cC5wYXltZW50UmVmZXJlbmNlO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0T3JkZXJSZWYodGhpcy5vcmRlclJlZik7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNDREV2ZW50KHRoaXMub3JkZXJDQ0RFdmVudCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNyZWF0ZWQodGhpcy5vcmRlckNyZWF0ZWQpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJEZXRhaWwodGhpcy5vcmRlckRldGFpbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclBhcnR5KHRoaXMub3JkZXJQYXJ0eSk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclRvdGFsUGF5bWVudHModGhpcy5vcmRlclRvdGFsUGF5bWVudHMpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJSZW1pc3Npb25Ub3RhbCh0aGlzLm9yZGVyUmVtaXNzaW9uVG90YWwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJGZWVzVG90YWwodGhpcy5vcmRlckZlZXNUb3RhbCk7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheW1lbnQtdmlldyc7XG4gIH1cblxuICBjaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQ6IElQYXltZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHBheW1lbnQgIT09IG51bGwgJiYgcGF5bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcGF5bWVudC5pc3N1ZV9yZWZ1bmQgJiYgcGF5bWVudC5yZWZ1bmRfZW5hYmxlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjaGtJc0FkZFJlZnVuZEJ0bkVuYWJsZShyZW1pc3Npb246IElSZW1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAocmVtaXNzaW9uICE9PSBudWxsICYmIHJlbWlzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmVtaXNzaW9uLmFkZF9yZWZ1bmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjYW5JdEJlUmVmdW5kZWQocmVtaXNzaW9uOiBJUmVtaXNzaW9uKTogYm9vbGVhbiB7XG5cbiAgICBpZiAocmVtaXNzaW9uICE9PSBudWxsICYmIHJlbWlzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmVtaXNzaW9uLmFkZF9yZWZ1bmQgPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHJlbWlzc2lvbi5vdmVyYWxsX2JhbGFuY2UgPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWU6IElGZWUpOiBib29sZWFuIHtcbiAgICBpZiAoZmVlICE9PSBudWxsICYmIGZlZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmVlLmFkZF9yZW1pc3Npb24gJiYgZmVlLnJlbWlzc2lvbl9lbmFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXNldE9yZGVyRGF0YSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldE9yZGVyUmVmKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDQ0RFdmVudChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyQ3JlYXRlZChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRGV0YWlsKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJQYXJ0eShudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyVG90YWxQYXltZW50cyhudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyUmVtaXNzaW9uVG90YWwobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckZlZXNUb3RhbChudWxsKTtcbiAgfVxuXG4gIHNlbGVjdFB5bWVudE9wdGlvbihwYXltZW50VHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXltZW50VHlwZSA9IHBheW1lbnRUeXBlO1xuICAgIHRoaXMuaXNDb250aW51ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gIH1cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcCgpIHtcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJyc7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheW1lbnR2aWV3JztcbiAgfVxuICBjb250aW51ZVBheW1lbnQocGF5bWVudGdycDogSVBheW1lbnRHcm91cCkge1xuXG4gICAgaWYgKHRoaXMucGF5bWVudFR5cGUgPT09ICdvcCcpIHtcbiAgICAgIHRoaXMuaXNGdWxseVJlZnVuZCA9IGZhbHNlXG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBheW1lbnRUeXBlID09PSAnZnAnKSB7XG4gICAgICB0aGlzLmlzRnVsbHlSZWZ1bmQgPSB0cnVlXG4gICAgICB0aGlzLnBheW1lbnRHcm91cExpc3QgPSBwYXltZW50Z3JwO1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2lzc3VlcmVmdW5kJztcbiAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSBcIlwiO1xuICAgICAgdGhpcy5pc1JlZnVuZFJlbWlzc2lvbiA9IHRydWU7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICB0aGlzLmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U7XG4gICAgfVxuICB9XG4gIGdldENvbnRhY3REZXRhaWxzKG9iajogSVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgdGhpcy5jb250YWN0RGV0YWlsc09iaiA9IG9iajtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50R3JvdXBMaXN0LnBheW1lbnRzWzBdKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuICBnb3RvUGF5bWVudFNlbGVjdFBhZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJwYXltZW50JztcbiAgfVxuICBnb3RvQWRkcmVzc1BhZ2Uobm90ZT86IElSZWZ1bmRDb250YWN0RGV0YWlscykge1xuICAgIGlmIChub3RlKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHsgY29udGFjdF9kZXRhaWxzOiBub3RlLCBub3RpZmljYXRpb25fdHlwZTogbm90ZS5ub3RpZmljYXRpb25fdHlwZSB9O1xuICAgIH1cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSc7XG4gIH1cbiAgcHJvY2Vzc1JlZnVuZCgpIHtcbiAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgY29uc3Qgb2JqID0gdGhpcy5wYXltZW50R3JvdXBMaXN0LmZlZXNbMF07XG4gICAgdGhpcy5mZWVzID0gW3tcbiAgICAgIGlkOiBvYmouaWQsXG4gICAgICBjb2RlOiBvYmouY29kZSxcbiAgICAgIHZlcnNpb246IG9iai52ZXJzaW9uLFxuICAgICAgYXBwb3J0aW9uX2Ftb3VudDogb2JqLmFwcG9ydGlvbl9hbW91bnQsXG4gICAgICBjYWxjdWxhdGVkX2Ftb3VudDogb2JqLmNhbGN1bGF0ZWRfYW1vdW50LFxuICAgICAgdXBkYXRlZF92b2x1bWU6IG9iai51cGRhdGVkX3ZvbHVtZSA/IG9iai51cGRhdGVkX3ZvbHVtZSA6IG9iai52b2x1bWUsXG4gICAgICB2b2x1bWU6IG9iai52b2x1bWUsXG4gICAgICByZWZ1bmRfYW1vdW50OiB0aGlzLmdldE92ZXJQYXltZW50VmFsdWUoKVxuICAgIH1dO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gbmV3IFBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbih0aGlzLmNvbnRhY3REZXRhaWxzT2JqLCB0aGlzLmZlZXMsIHRoaXMucGF5bWVudEdyb3VwTGlzdC5wYXltZW50c1swXS5yZWZlcmVuY2UsICdSUjAzNycsXG4gICAgICB0aGlzLmdldE92ZXJQYXltZW50VmFsdWUoKSwgJ29wJyk7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UucG9zdFJlZnVuZHNSZWFzb24ocmVxdWVzdEJvZHkpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICcnO1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdyZWZ1bmRjb25maXJtYXRpb25wYWdlJztcbiAgICAgICAgICB0aGlzLnJlZnVuZFJlZmVyZW5jZSA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9yZWZlcmVuY2U7XG4gICAgICAgICAgdGhpcy5yZWZ1bmRBbW91bnQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfYW1vdW50O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgfVxuXG4gIGdldE92ZXJQYXltZW50VmFsdWUoKSB7XG4gICAgbGV0IGZlZXNPdmVyUGF5bWVudCA9IDA7XG4gICAgdGhpcy5wYXltZW50R3JvdXBMaXN0LmZlZXMuZm9yRWFjaChmZWUgPT4ge1xuICAgICAgZmVlc092ZXJQYXltZW50ICs9IGZlZS5vdmVyX3BheW1lbnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZlZXNPdmVyUGF5bWVudCA+IDAgPyBmZWVzT3ZlclBheW1lbnQgOiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQub3ZlclBheW1lbnRBbW91bnQ7XG5cbiAgfVxuXG4gIGdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQ6IElQYXltZW50KTogdm9pZCB7XG5cbiAgICBpZiAocGF5bWVudCA9PSB1bmRlZmluZWQgfHwgcGF5bWVudCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gJ1RlbXBsYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUocGF5bWVudC5jaGFubmVsLCBwYXltZW50Lm1ldGhvZCk7XG4gICAgfVxuXG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gIH1cblxuICBoYXNQYXltZW50c1JvbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuTE9HR0VESU5VU0VSUk9MRVMuaW5jbHVkZXMoJ3BheW1lbnRzJyk7XG4gIH1cbn1cbiIsIjwhLS0gT3JkZXIgRnVsbCBWaWV3IERldGFpbHMtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnb3JkZXItZnVsbC12aWV3J1wiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNcIj5cbiAgICAgIDxvbCBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0XCI+XG4gICAgICAgIDxsaSBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0LWl0ZW1cIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgPT09ICdmYWxzZSdcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rXCI+e3sgXCJCYWNrXCIgfCBycHhUcmFuc2xhdGUgfX08L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzX19saXN0LWl0ZW1cIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgIT09ICdmYWxzZSdcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9TZXJ2aWNlUmVxdWVzdFBhZ2UoKVwiIGlkPVwiYmNrTG5rc2l6ZVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rXCI+e3sgXCJCYWNrXCIgfCBycHhUcmFuc2xhdGUgfX08L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L29sPlxuICAgIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIGdvdnVrLSEtbWFyZ2luLXRvcC0wXCI+e3sgXCJTZXJ2aWNlIHJlcXVlc3RcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx0YWJsZSA+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+e3sgXCJTZXJ2aWNlIHJlcXVlc3QgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3tvcmRlclJlZn19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlN0YXR1c1wiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IG9yZGVyU3RhdHVzIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIkRhdGUgY3JlYXRlZFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7b3JkZXJDcmVhdGVkIHwgZGF0ZTonZGQgTU1NTSB5eXl5J319PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlBhcnR5XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3tvcmRlclBhcnR5fX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPkNDRCB7eyBcImV2ZW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJDQ0RFdmVudCB8IHJweFRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwgb3JkZXItY2xhc3NcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGUgXCI+XG4gICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC01MVwiIHNjb3BlPVwiY29sXCIgKm5nSWY9XCJpc1NlcnZpY2VSZXF1ZXN0ID09PSAnZmFsc2UnXCI+e3sgXCJGZWVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC01MVwiIHNjb3BlPVwiY29sXCIgY29sc3Bhbj1cIjJcIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgIT09ICdmYWxzZSdcIj57eyBcIkZlZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPnt7IFwiQW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+e3sgXCJUb3RhbFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCAgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgPT09ICdmYWxzZSdcIj48L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0Zvcj1cImxldCBvcmRlciBvZiBvcmRlckRldGFpbDtcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgZmVlIG9mIG9yZGVyLmZlZXM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGNvbC02MCB3aGl0ZXNwYWNlLWluaGVyaXRcIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgPT09ICdmYWxzZSdcIj57eyBmZWUuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGNvbC02MCB3aGl0ZXNwYWNlLWluaGVyaXRcIiBjb2xzcGFuPVwiMlwiICpuZ0lmPVwiaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJ1wiPnt7ZmVlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e2ZlZS52b2x1bWU/IGZlZS52b2x1bWUgOiAnLSd9fSBYIHt7IGZlZS5jYWxjdWxhdGVkX2Ftb3VudC9mZWUudm9sdW1lfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgZmVlPy5uZXRfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBhbGlnbnJpZ2h0XCIgKm5nSWY9XCJpc1NlcnZpY2VSZXF1ZXN0ID09PSAnZmFsc2UnXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2hrSXNBZGRSZW1pc3Npb25CdG5FbmFibGUoZmVlKVwiICAgKGNsaWNrKT1cImFkZFJlbWlzc2lvbihmZWUpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj57eyBcIkFkZCByZW1pc3Npb25cIiB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiAqbmdGb3I9XCJsZXQgb3JkZXIgb2Ygb3JkZXJEZXRhaWw7XCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nSWY9XCJvcmRlci5mZWVzPy5sZW5ndGggPT09IDBcIiA+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGFsaWdubGVmdFwiIGNvbHNwYW49XCI3XCI+e3sgXCJObyBmZWVzIHJlY29yZGVkXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXh3aWR0aFwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwidG90YWxmZWVzXCI+e3sgXCJUb3RhbCBmZWVzXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7b3JkZXJGZWVzVG90YWwgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgIDwhLS0gcmVtaXNzaW9ucyAtLT5cbjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9yZGVyIG9mIG9yZGVyRGV0YWlsO1wiID5cbiAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIG9yZGVyLWNsYXNzXCIgKm5nSWY9XCJvcmRlci5yZW1pc3Npb25zXCI+XG4gICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0yNCB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPnt7IFwiSGVscCB3aXRoIGZlZXMgb3IgcmVtaXNzaW9uIGNvZGVcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI3IHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJSZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj57eyBcIkZlZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPnt7IFwiUmVtaXNzaW9uIEFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgPHRkICBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgd2hpdGVzcGFjZS1pbmhlcml0IHJlZnVuZEJ0blwiIHNjb3BlPVwiY29sXCI+PC90ZD5cbiAgICAgICAgIDwvdHI+XG4gICAgIDwvdGhlYWQ+XG4gICAgIDx0Ym9keSAgKm5nSWY9XCJvcmRlci5yZW1pc3Npb25zPy5sZW5ndGggPiAwXCIgIGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIiA+XG4gICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCByZW1pc3Npb24gb2Ygb3JkZXIucmVtaXNzaW9uc1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbj8uaHdmX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbj8ucmVtaXNzaW9uX3JlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbj8uZmVlX2NvZGUgfX08L3RkPlxuICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyByZW1pc3Npb24/Lmh3Zl9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgcmVmdW5kQnRuIHdoaXRlc3BhY2UtaW5oZXJpdFwiICA+XG4gICAgICAgICAgICAgIDxidXR0b24gIFtkaXNhYmxlZF09XCIhY2FuSXRCZVJlZnVuZGVkKHJlbWlzc2lvbilcIiAoY2xpY2spPVwiYWRkUmVmdW5kRm9yUmVtaXNzaW9uKG9yZGVyLnBheW1lbnRzWzBdLHJlbWlzc2lvbixvcmRlci5mZWVzKVwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5XCI+IEFkZCByZWZ1bmQ8L2J1dHRvbj5cbiAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPCEtLSA8dGQgIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgcmVmdW5kQnRuIHdoaXRlc3BhY2UtaW5oZXJpdFwiICA+XG5cbiAgICAgICAgIDwvdGQ+IC0tPlxuICAgICAgICAgPC90cj5cbiAgICAgPC90Ym9keT5cblxuXG4gICA8L3RhYmxlPlxuICAgPGRpdiAqbmdJZj1cIm9yZGVyLnJlbWlzc2lvbnM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgIDxzcGFuID57eyBcIk5vIGhlbHAgd2l0aCBmZWVzIG9yIHJlbWlzc2lvbnMuXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gPC9kaXY+XG4gICA8ZGl2IGNsYXNzPVwic3VtbWFyeXBhZ2VhbGlnblwiPlxuICAgICAgPHA+e3sgXCJUb3RhbCByZWR1Y3Rpb25zXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7b3JkZXJSZW1pc3Npb25Ub3RhbCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInICB9fTwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdW1tYXJ5cGFnZWFsaWduXCI+XG4gICAgICAgIDxwIGNsYXNzPVwic3VtbWFyeXBhZ2VcIj57eyBcIlRvdGFsIGZlZXMgdG8gcGF5XCIgfCBycHhUcmFuc2xhdGUgfX06IHt7KG9yZGVyRmVlc1RvdGFsIC0gb3JkZXJSZW1pc3Npb25Ub3RhbCkgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyAgfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L25nLWNvbnRhaW5lcj5cblxuICAgPCEtLVBheW1lbnRzLS0+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9yZGVyIG9mIG9yZGVyRGV0YWlsO1wiID5cbiAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCIgKm5nSWY9XCJvcmRlci5wYXltZW50cyAmJiBoYXNQYXltZW50c1JvbGUoKVwiPlxuICAgICAgPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj57eyBcIlBheW1lbnRzXCIgfCBycHhUcmFuc2xhdGUgfX08L2gzPlxuICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGUgXCI+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNvbC0yNVwiIHNjb3BlPVwiY29sXCI+PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPnt7IFwiRGF0ZSBjcmVhdGVkXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+e3sgXCJBbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj48L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5ICAqbmdJZj1cIm9yZGVyLnBheW1lbnRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgICpuZ0Zvcj1cImxldCBwYXltZW50IG9mIG9yZGVyLnBheW1lbnRzXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj5cbiAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50LnJlZmVyZW5jZSwgcGF5bWVudC5tZXRob2QpXCI+e3sgXCJSZXZpZXdcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50Py5kYXRlX2NyZWF0ZWQgfCBkYXRlOidkZCBNTU0geXl5eScgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcGF5bWVudD8uYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgYWxpZ25yaWdodFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2hrSXNJc3N1ZVJlZnVuZEJ0bkVuYWJsZShwYXltZW50KVwiICAgKGNsaWNrKT1cImlzc3VlUmVmdW5kKHBheW1lbnQpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj57eyBcIklzc3VlIHJlZnVuZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPCEtLSA8dGQgICpuZ0lmPVwiIWNoa0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQpXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+XG4gICAgICAgICAgICA8L3RkPiAtLT5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuXG4gIDxkaXYgKm5nSWY9XCJvcmRlci5wYXltZW50cyA9PT0gdW5kZWZpbmVkIHx8IG9yZGVyLnBheW1lbnRzID09PSBudWxsXCI+XG4gICAgICA8IS0tIDxoMyBjbGFzcz1cImhlYWRpbmctbWVkaXVtIG1hci0xN1wiPlBheW1lbnRzPC9oMz4gLS0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hci0xN1wiID57eyBcIk5vIFBheW1lbnRzIHJlY29yZGVkXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiAgPGRpdj5cbiAgICAgIDxwIGNsYXNzPVwidG90YWxQYXlcIj57eyBcIlRvdGFsIGZlZXMgbGVmdCB0byBwYXlcIiB8IHJweFRyYW5zbGF0ZSB9fTogPGI+e3soKG9yZGVyRmVlc1RvdGFsIC0gb3JkZXJSZW1pc3Npb25Ub3RhbCktIG9yZGVyVG90YWxQYXltZW50cyApfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvYj4gPC9wPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48Y2NwYXktYWRkLXJlbWlzc2lvbiAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdhZGRyZW1pc3Npb24nICYmIGZlZUlkXCJcbltpc1R1cm5PZmZdPVwiaXNUdXJuT2ZmXCJcbltpc1N0cmF0ZWdpY0ZpeEVuYWJsZV09XCJpc1N0cmF0ZWdpY0ZpeEVuYWJsZVwiXG5bdmlld0NvbXBTdGF0dXNdPSBcInZpZXdTdGF0dXNcIlxuW2ZlZV09XCJmZWVJZFwiXG5bb3JkZXJTdGF0dXNdID1cIm9yZGVyU3RhdHVzXCJcbltwYWlkQW1vdW50XT0gXCJvcmRlclRvdGFsUGF5bWVudHNcIlxuW2lzUmVmdW5kUmVtaXNzaW9uXT1cImlzUmVmdW5kUmVtaXNzaW9uXCJcbltjYXNlVHlwZV09XCJjYXNlVHlwZVwiXG5baXNTZXJ2aWNlUmVxdWVzdF0gPSBcImlzU2VydmljZVJlcXVlc3RcIlxuW3BheW1lbnRHcm91cFJlZl09XCJvcmRlclJlZlwiXG5baXNGcm9tU2VydmljZVJlcXVlc3RQYWdlXSA9IFwidHJ1ZVwiXG5bcGF5bWVudF0gPSBcInBheW1lbnRcIlxuW2NjZENhc2VOdW1iZXJdPVwiY2NkQ2FzZU51bWJlclwiXG5bb3JkZXJSZWZdID0gXCJvcmRlclJlZlwiXG5bb3JkZXJTdGF0dXNdID0gXCJvcmRlclN0YXR1c1wiXG5bb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbltvcmRlclBhcnR5XSA9IFwib3JkZXJQYXJ0eVwiXG5bb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuW0xPR0dFRElOVVNFUlJPTEVTXSA9IFwiTE9HR0VESU5VU0VSUk9MRVNcIlxuW3Rha2VwYXltZW50XSA9IFwidGFrZVBheW1lbnRcIlxuW29yZGVyRmVlc1RvdGFsXSA9IFwib3JkZXJGZWVzVG90YWxcIlxuW29yZGVyVG90YWxQYXltZW50c10gPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5bb3JkZXJSZW1pc3Npb25Ub3RhbF0gPSBcIm9yZGVyUmVtaXNzaW9uVG90YWxcIlxuPjwvY2NwYXktYWRkLXJlbWlzc2lvbj5cbjxjY3BheS1hZGQtcmVtaXNzaW9uICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ2lzc3VlcmVmdW5kJyAmJiBwYXltZW50XCJcbltpc1R1cm5PZmZdPVwiaXNUdXJuT2ZmXCJcbltpc1N0cmF0ZWdpY0ZpeEVuYWJsZV09XCJpc1N0cmF0ZWdpY0ZpeEVuYWJsZVwiXG5bdmlld0NvbXBTdGF0dXNdPSBcInZpZXdTdGF0dXNcIlxuW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV09XCJpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VcIlxuW2lzRnJvbVBheW1lbnREZXRhaWxQYWdlXSA9IFwiaXNGcm9tUGF5bWVudERldGFpbFBhZ2VcIlxuW3BheW1lbnRdPVwicGF5bWVudFwiXG5bb3JkZXJTdGF0dXNdID1cIm9yZGVyU3RhdHVzXCJcbltwYWlkQW1vdW50XT0gXCJvcmRlclRvdGFsUGF5bWVudHNcIlxuW2lzUmVmdW5kUmVtaXNzaW9uXT1cImlzUmVmdW5kUmVtaXNzaW9uXCJcbltjYXNlVHlwZV09XCJjYXNlVHlwZVwiXG5bcGF5bWVudEdyb3VwUmVmXT1cIm9yZGVyUmVmXCJcbltjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIlxuW29yZGVyUmVmXSA9IFwib3JkZXJSZWZcIlxuW29yZGVyU3RhdHVzXSA9IFwib3JkZXJTdGF0dXNcIlxuW29yZGVyQ3JlYXRlZF0gPSBcIm9yZGVyQ3JlYXRlZFwiXG5bb3JkZXJQYXJ0eV0gPSBcIm9yZGVyUGFydHlcIlxuW29yZGVyQ0NERXZlbnRdID0gXCJvcmRlckNDREV2ZW50XCJcbltvcmRlckRldGFpbF0gPSBcIm9yZGVyRGV0YWlsXCJcbltpc0Z1bGx5UmVmdW5kXSA9IFwiaXNGdWxseVJlZnVuZFwiXG5bZmVlc10gPSBcInBheW1lbnRGZWVzXCJcbltMT0dHRURJTlVTRVJST0xFU10gPSBcIkxPR0dFRElOVVNFUlJPTEVTXCJcbltpc0Zyb21SZWZ1bmRMaXN0UGFnZV0gPSBcImZhbHNlXCJcblt0YWtlcGF5bWVudF0gPSBcInRha2VQYXltZW50XCJcbltvcmRlckZlZXNUb3RhbF0gPSBcIm9yZGVyRmVlc1RvdGFsXCJcbltvcmRlclRvdGFsUGF5bWVudHNdID0gXCJvcmRlclRvdGFsUGF5bWVudHNcIlxuW29yZGVyUmVtaXNzaW9uVG90YWxdID0gXCJvcmRlclJlbWlzc2lvblRvdGFsXCI+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuXG48Y2NwYXktYWRkLXJlbWlzc2lvbiAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdhZGRyZWZ1bmRmb3JyZW1pc3Npb24nICYmIHBheW1lbnRcIlxuW2lzVHVybk9mZl09XCJpc1R1cm5PZmZcIlxuW2lzU3RyYXRlZ2ljRml4RW5hYmxlXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcblt2aWV3Q29tcFN0YXR1c109IFwidmlld1N0YXR1c1wiXG5bcGF5bWVudF09XCJwYXltZW50XCJcbltvcmRlclN0YXR1c10gPVwib3JkZXJTdGF0dXNcIlxuW3BhaWRBbW91bnRdPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5baXNSZWZ1bmRSZW1pc3Npb25dPVwiaXNSZWZ1bmRSZW1pc3Npb25cIlxuW2Nhc2VUeXBlXT1cImNhc2VUeXBlXCJcbltmZWVhbW91bnRdPVwicmVtaXNzaW9uRmVlQW10XCJcbltyZW1pc3Npb25dID0gXCJyZW1pc3Npb25zXCJcbltpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VdPVwiaXNTZXJ2aWNlUmVxdWVzdFwiXG5bY2NkQ2FzZU51bWJlcl09XCJjY2RDYXNlTnVtYmVyXCJcbltvcmRlclJlZl0gPSBcIm9yZGVyUmVmXCJcbltvcmRlclN0YXR1c10gPSBcIm9yZGVyU3RhdHVzXCJcbltvcmRlckNyZWF0ZWRdID0gXCJvcmRlckNyZWF0ZWRcIlxuW29yZGVyUGFydHldID0gXCJvcmRlclBhcnR5XCJcbltvcmRlckNDREV2ZW50XSA9IFwib3JkZXJDQ0RFdmVudFwiXG5bb3JkZXJEZXRhaWxdID0gXCJvcmRlckRldGFpbFwiXG5bTE9HR0VESU5VU0VSUk9MRVNdID0gXCJMT0dHRURJTlVTRVJST0xFU1wiXG5bdGFrZXBheW1lbnRdID0gXCJ0YWtlUGF5bWVudFwiXG5bb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG5bb3JkZXJUb3RhbFBheW1lbnRzXSA9IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltvcmRlclJlbWlzc2lvblRvdGFsXSA9IFwib3JkZXJSZW1pc3Npb25Ub3RhbFwiPjwvY2NwYXktYWRkLXJlbWlzc2lvbj5cblxuPGNjcGF5LXBheW1lbnQtdmlldyAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdwYXltZW50LXZpZXcnXCJcbltMT0dHRURJTlVTRVJST0xFU10gPSBcIkxPR0dFRElOVVNFUlJPTEVTXCJcbltpc1R1cm5PZmZdID0gXCJpc1R1cm5PZmZcIlxuW2lzVGFrZVBheW1lbnRdID0gXCJ0YWtlUGF5bWVudFwiXG5bY2FzZVR5cGVdID0gXCJjYXNlVHlwZVwiXG5bb3JkZXJSZWZdID0gXCJvcmRlclJlZlwiXG5bb3JkZXJTdGF0dXNdID0gXCJvcmRlclN0YXR1c1wiXG5bb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbltvcmRlclBhcnR5XSA9IFwib3JkZXJQYXJ0eVwiXG5bb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuW29yZGVyRmVlc1RvdGFsXSA9IFwib3JkZXJGZWVzVG90YWxcIlxuW29yZGVyVG90YWxQYXltZW50c10gPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5bb3JkZXJSZW1pc3Npb25Ub3RhbF0gPSBcIm9yZGVyUmVtaXNzaW9uVG90YWxcIlxuW2lzU2VydmljZVJlcXVlc3RdID0gXCJpc1NlcnZpY2VSZXF1ZXN0XCI+XG48L2NjcGF5LXBheW1lbnQtdmlldz5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdmZWVSZW1vdmFsQ29uZmlybWF0aW9uJ1wiPlxuPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gIDxzdHJvbmcgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX3RleHRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fYXNzaXN0aXZlXCI+e3sgXCJXYXJuaW5nXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAge3sgXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZmVlP1wiIHwgcnB4VHJhbnNsYXRlIH19XG4gIDwvc3Ryb25nPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyYlwiPlxuICA8Zm9ybSBub3ZhbGlkYXRlPlxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbFJlbW92YWwoKVwiPlxuICAgICAge3sgXCJDYW5jZWxcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNSZW1vdmVCdG5EaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPSdpc1JlbW92ZUJ0bkRpc2FibGVkID8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCInXG4gICAgKGNsaWNrKT1cInJlbW92ZUZlZShmZWVJZClcIj5cbiAgICAgIHt7IFwiUmVtb3ZlXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9mb3JtPlxuPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cIm92ZXItcGF5bWVudFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld0NvbXBTdGF0dXMgPT09ICdvdmVycGF5bWVudCdcIj5cbiAgICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBpZD0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J09WRVJQQVlNRU5UUEFHRSc+XG4gICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPnt7IFwiSXNzdWUgcmVmdW5kXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICAgIDxoMSBjbGFzcz1cImhlYWRpbmctbWVkaXVtXCI+e3sgXCJDYXNlIHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19OiB7e2NjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9oMT5cbiAgICA8c3BhbiBpZD1cImhvdy1jb250YWN0ZWQtY29uZGl0aW9uYWwtaGludCBnb3Z1ay1mb250MTlweFwiIGNsYXNzPVwiZm9ybS1oaW50XCI+XG4gICAgICB7eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7cGF5bWVudEdyb3VwTGlzdD8ucGF5bWVudHNbMF0/LnJlZmVyZW5jZX19XG4gICAgPC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctbWVkaXVtXCI+e3sgXCJTZWxlY3QgcGF5bWVudCB0byByZWZ1bmRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwib3Zlci1wYXltZW50XCIgbmFtZT1cIm92ZXItcGF5bWVudFwiIHR5cGU9XCJyYWRpb1wiIChjbGljayk9XCJzZWxlY3RQeW1lbnRPcHRpb24oJ29wJylcIiB2YWx1ZT1cIm9wXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1mb250MTlweFwiIGZvcj1cIndoZXJlLWRvLXlvdS1saXZlXCI+XG4gICAgICAgICAgICB7eyBcIk92ZXIgcGF5bWVudFwiIHwgcnB4VHJhbnNsYXRlIH19IMKje3tnZXRPdmVyUGF5bWVudFZhbHVlKCkgfCBudW1iZXI6Jy4yJ319XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCIgaWQ9XCJmdWxsLXBheW1lbnRcIiBuYW1lPVwib3Zlci1wYXltZW50XCIgdHlwZT1cInJhZGlvXCIgKGNsaWNrKT1cInNlbGVjdFB5bWVudE9wdGlvbignZnAnKVwiIHZhbHVlPVwiZnBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIGdvdnVrLWZvbnQxOXB4XCIgZm9yPVwid2hlcmUtZG8teW91LWxpdmUtMlwiPlxuICAgICAgICAgICAge3sgXCJGdWxsIHBheW1lbnRcIiB8IHJweFRyYW5zbGF0ZSB9fSDCo3t7cGF5bWVudEdyb3VwTGlzdD8ucGF5bWVudHNbMF0/LmFtb3VudCB8IG51bWJlcjonLjInfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IG92ZXItcGF5bWVudC1hbGlnbm1lbnQgZ292dWstZm9udDE5cHhcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1BheW1lbnRWaWV3Q29tcCgpXCI+IHt7IFwiUHJldmlvdXNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjb250aW51ZVBheW1lbnQocGF5bWVudEdyb3VwTGlzdClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNDb250aW51ZUJ0bkRpc2FibGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPSdpc0NvbnRpbnVlQnRuRGlzYWJsZWQgPyBcImJ1dHRvbiBidXR0b24tLWRpc2FibGVkIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTEgZ292dWstZm9udDE5cHhcIiA6IFwiYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTEgZ292dWstZm9udDE5cHhcIidcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b25cIj4ge3sgXCJDb250aW51ZVwiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgPC9maWVsZHNldD5cbiAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q29tcFN0YXR1cyA9PT0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnXCI+XG4gICAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdPVkVSUEFZTUVOVEFERFJFU1NDQVBUVVJFUEFHRSc+XG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3sgXCJJc3N1ZSByZWZ1bmRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1tIGdvdnVrLWZvbnQxOXB4XCI+e3sgXCJDYXNlIHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19OiB7e2NjZENhc2VOdW1iZXIgfCBjY2RIeXBoZW5zIH19PC9oMj5cbiAgICA8c3BhbiBpZD1cImhvdy1jb250YWN0ZWQtY29uZGl0aW9uYWwtaGludFwiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1mb250MTlweFwiPlxuICAgICAge3sgXCJQYXltZW50IHJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19OiB7e3BheW1lbnRHcm91cExpc3Q/LnBheW1lbnRzWzBdPy5yZWZlcmVuY2V9fVxuICAgIDwvc3Bhbj5cbiAgPGNjcGF5LWNvbnRhY3QtZGV0YWlsc1xuICBbYWRkcmVzc09ial0gPSBub3RpZmljYXRpb25cbiAgKGFzc2lnbkNvbnRhY3REZXRhaWxzKT1cImdldENvbnRhY3REZXRhaWxzKCRldmVudClcIlxuICAocmVkaXJlY3RUb0lzc3VlUmVmdW5kKT1cImdvdG9QYXltZW50U2VsZWN0UGFnZSgkZXZlbnQpXCIgPjwvY2NwYXktY29udGFjdC1kZXRhaWxzPlxuICA8cD5cbiAgICAgIDxhIChjbGljayk9XCJnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgIHt7IFwiQ2FuY2VsXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYT5cbiAgPC9wPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld0NvbXBTdGF0dXMgPT09ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJ1wiPlxuICAgIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nQUREUkVGVU5ERk9SUkVNSVNTSU9OJz5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0XCI+XG5cbiAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPiB7eyBcIkNoZWNrIHlvdXIgYW5zd2Vyc1wiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZSBnb3Z1ay10YWJsZS1tYlwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3BheW1lbnRHcm91cExpc3QucGF5bWVudHNbMF0ucmVmZXJlbmNlfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIlBheW1lbnQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3BheW1lbnRHcm91cExpc3QucGF5bWVudHNbMF0uYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiRmVlIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3twYXltZW50R3JvdXBMaXN0Py5mZWVzWzBdPy5uZXRfYW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiUmVmdW5kIGFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3tnZXRPdmVyUGF5bWVudFZhbHVlKCkgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJSZWZ1bmQgcmVhc29uXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBcIk92ZXIgcGF5bWVudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiU2VuZCB0b1wiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7b3JkZXJQYXJ0eX19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiU2VuZCB2aWFcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0RGV0YWlsc09iaj8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCdcIiBjbGFzcz1cImNvbnRhY3REZXRhaWxzLXdpZHRoXCI+XG4gICAgICAgICAgICA8c3Ryb25nPkVtYWlsPC9zdHJvbmc+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAge3tjb250YWN0RGV0YWlsc09iaj8uZW1haWw/LnRyaW0oKX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRhY3REZXRhaWxzT2JqPy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0xFVFRFUidcIiBjbGFzcz1cImNvbnRhY3REZXRhaWxzLXdpZHRoXCI+XG4gICAgICAgICAgICA8c3Ryb25nPlBvc3Q8L3N0cm9uZz5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICB7e2NvbnRhY3REZXRhaWxzT2JqPy5hZGRyZXNzX2xpbmU/LnRyaW0oKX19Jm5ic3A7e3tjb250YWN0RGV0YWlsc09iaj8uY2l0eT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5jb3VudHk/LnRyaW0oKX19Jm5ic3A7e3tjb250YWN0RGV0YWlsc09iaj8uY291bnRyeT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5wb3N0YWxfY29kZT8udHJpbSgpfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YSAoY2xpY2spPVwiZ290b0FkZHJlc3NQYWdlKGNvbnRhY3REZXRhaWxzT2JqKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiID5DaGFuZ2U8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuXG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPk5vdGlmaWNhdGlvbjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3t0ZW1wbGF0ZUluc3RydWN0aW9uVHlwZX19XG4gICAgICAgICAgICA8YSAqbmdJZj1cIiFub3RpZmljYXRpb25QcmV2aWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiIChjbGljayk9XCJzaG93Tm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICAgIFByZXZpZXdcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwibm90aWZpY2F0aW9uUHJldmlld1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcmlnaHRcIiAoY2xpY2spPVwiaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgICBIaWRlIFByZXZpZXdcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90YWJsZT5cblxuICAgIDxhcHAtbm90aWZpY2F0aW9uLXByZXZpZXcgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCJcbiAgICBbcGF5bWVudF09XCJwYXltZW50R3JvdXBMaXN0LnBheW1lbnRzWzBdXCJcbiAgICBbY29udGFjdERldGFpbHNdPVwiY29udGFjdERldGFpbHNPYmpcIlxuICAgIFtyZWZ1bmRSZWFzb25dPVwiJ1JSMDM3J1wiXG4gICAgW3JlZnVuZEFtb3VudF09XCJnZXRPdmVyUGF5bWVudFZhbHVlKClcIj48L2FwcC1ub3RpZmljYXRpb24tcHJldmlldz5cblxuXG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgb3Zlci1wYXltZW50LWFsaWdubWVudCBnb3Z1ay1mb250MTlweFwiIChjbGljayk9XCJnb3RvQWRkcmVzc1BhZ2UoY29udGFjdERldGFpbHNPYmopXCI+UHJldmlvdXM8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgIFtuZ0NsYXNzXT0naXNDb250aW51ZUJ0bkRpc2FibGVkID8gXCJidXR0b24gYnV0dG9uLS1kaXNhYmxlZCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xIGdvdnVrLWZvbnQxOXB4XCIgOiBcImJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xIGdvdnVrLWZvbnQxOXB4XCInXG4gICAgKGNsaWNrKT1cInByb2Nlc3NSZWZ1bmQoKVwiPlxuICAgICAgU3VibWl0IHJlZnVuZFxuICAgIDwvYnV0dG9uPlxuICAgIDxwPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgIChjbGljayk9XCJnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstZm9udDE5cHhcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPlxuICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYT5cbiAgICA8L3A+XG5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAncmVmdW5kY29uZmlybWF0aW9ucGFnZScgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVycGF5bWVudCcgJiYgdmlld0NvbXBTdGF0dXMgIT09ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG4gICAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdSRVRST1JFTUlTU0lPTlJFRlVORENPTkZJUk1BVElPTlBBR0UnPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvdyBwYWdlc2l6ZVwiPlxuICAgICAgPGRpdiA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbCBnb3Z1ay1wYW5lbC0tY29uZmlybWF0aW9uXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstcGFuZWxfc2VydmljZV9yZXF1ZXN0X3RpdGxlXCI+XG4gICAgICAgICAgICBSZWZ1bmQgc3VibWl0dGVkXG4gICAgICAgICAgPC9oMT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5IHdoaXRlXCI+PHN0cm9uZyBjbGFzcz1cIndoaXRlXCI+UmVmdW5kIHJlZmVyZW5jZToge3tyZWZ1bmRSZWZlcmVuY2V9fTwvc3Ryb25nPjwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+V2hhdCBoYXBwZW5zIG5leHQ8L2gyPlxuICAgICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAgICBBIHJlZnVuZCByZXF1ZXN0IGZvciB7e3JlZnVuZEFtb3VudCAgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fSBoYXMgYmVlbiBjcmVhdGVkIGFuZCB3aWxsIGJlIHBhc3NlZCB0byBhIHRlYW0gbGVhZGVyIHRvIGFwcHJvdmUuXG4gICAgICAgIDwvcD5cbiAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKCRldmVudClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcG9pbnRlclwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgIFJldHVybiB0byBjYXNlXG4gICAgPC9hPlxuICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG48Y2NwYXktY2FzZS10cmFuc2FjdGlvbnMgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnY2FzZS10cmFuc2FjdGlvbnMnXCJcbltpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VdPVwiaXNTZXJ2aWNlUmVxdWVzdFwiXG5bTE9HR0VESU5VU0VSUk9MRVNdID0gXCJMT0dHRURJTlVTRVJST0xFU1wiXG5baXNUYWtlUGF5bWVudF0gPSBcInRha2VQYXltZW50XCI+XG48L2NjcGF5LWNhc2UtdHJhbnNhY3Rpb25zPlxuIl19
|
|
529
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLXJlcXVlc3Qvc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLXJlcXVlc3Qvc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVFQUF1RTtBQUN2RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFPcEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQXVCekQsTUFBTSxPQUFPLHVCQUF1QjtJQXdGRDtJQUN2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUZrQixpQkFBaUIsQ0FBVztJQUNuQyxVQUFVLENBQVM7SUFDbEIsV0FBVyxDQUFRO0lBQ3RCLFFBQVEsQ0FBUztJQUNkLFdBQVcsQ0FBUztJQUNyQixVQUFVLENBQVM7SUFDakIsWUFBWSxDQUFPO0lBQ2xCLGFBQWEsQ0FBUztJQUNyQixjQUFjLENBQVM7SUFDbkIsa0JBQWtCLENBQVM7SUFDMUIsbUJBQW1CLENBQVM7SUFDL0IsZ0JBQWdCLENBQWdCO0lBQ3JDLFdBQVcsQ0FBVTtJQUNuQixhQUFhLENBQVU7SUFDcEIsZ0JBQWdCLENBQVM7SUFDMUMsMEJBQTBCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFN0UsY0FBYyxDQUFDO0lBQ2YsY0FBYyxDQUFTO0lBQ3ZCLFdBQVcsQ0FBUztJQUNwQixZQUFZLENBQVM7SUFDckIsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixRQUFRLEdBQWUsRUFBRSxDQUFDO0lBQzFCLFdBQVcsR0FBZSxFQUFFLENBQUM7SUFDN0IsV0FBVyxHQUFlLEVBQUUsQ0FBQztJQUM3QixVQUFVLEdBQWlCLEVBQUUsQ0FBQztJQUM5QixXQUFXLENBQVM7SUFDcEIsSUFBSSxDQUFNO0lBQ1YsWUFBWSxDQUFTO0lBQ3JCLFNBQVMsQ0FBUztJQUNsQixhQUFhLENBQVM7SUFDdEIsbUJBQW1CLENBQVM7SUFDNUIsZUFBZSxDQUFTO0lBQ3hCLGNBQWMsQ0FBUztJQUN2QixTQUFTLENBQVM7SUFDbEIsVUFBVSxDQUFTO0lBQ25CLFNBQVMsQ0FBVTtJQUNuQixpQkFBaUIsR0FBWSxJQUFJLENBQUM7SUFDbEMsb0JBQW9CLENBQVU7SUFDOUIsa0JBQWtCLEdBQVksSUFBSSxDQUFDO0lBQ25DLGlCQUFpQixHQUFZLEtBQUssQ0FBQztJQUNuQywyQkFBMkIsR0FBWSxLQUFLLENBQUM7SUFDN0Msd0JBQXdCLENBQVM7SUFDakMscUJBQXFCLEdBQVksSUFBSSxDQUFDO0lBQ3RDLHdCQUF3QixHQUFZLEtBQUssQ0FBQztJQUMxQyxnQkFBZ0IsQ0FBQztJQUNqQixpQkFBaUIsQ0FBVTtJQUMzQixtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFDckMsS0FBSyxDQUFPO0lBQ1osV0FBVyxHQUFXLENBQUMsQ0FBQztJQUN4QixzQkFBc0IsQ0FBUztJQUMvQixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsMkJBQTJCLEdBQVksS0FBSyxDQUFDO0lBQzdDLGlCQUFpQixDQUFTO0lBQzFCLFFBQVEsQ0FBUztJQUNqQix5QkFBeUIsQ0FBVTtJQUNuQyxlQUFlLENBQVM7SUFDeEIsWUFBWSxDQUFTO0lBQ3JCLE9BQU8sQ0FBVztJQUNsQixZQUFZLENBQWdCO0lBQzVCLFdBQVcsQ0FBZTtJQUUxQixvQkFBb0IsR0FBWSxLQUFLLENBQUM7SUFDdEMscUJBQXFCLEdBQVUsRUFBRSxDQUFDO0lBQ2xDLGNBQWMsR0FBeUIsRUFBRSxDQUFDO0lBQzFDLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFDdkIsbUJBQW1CLENBQVM7SUFDNUIsaUJBQWlCLENBQVU7SUFDM0IsdUJBQXVCLENBQVU7SUFDakMsaUJBQWlCLENBQXVCO0lBQ3hDLFlBQVksQ0FBTTtJQUNsQixTQUFTLENBQVU7SUFDbkIsSUFBSSxDQUFVO0lBQ2QsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixzQkFBc0IsR0FBWSxLQUFLLENBQUM7SUFDeEMsd0JBQXdCLEdBQVksS0FBSyxDQUFDO0lBQzFDLDBCQUEwQixHQUFZLEtBQUssQ0FBQztJQUM1QywwQkFBMEIsR0FBRyxDQUFDLDBCQUEwQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0Usd0JBQXdCLENBQVU7SUFDbEMsY0FBYyxDQUFTO0lBQ3ZCLGVBQWUsQ0FBUztJQUN4QixxQkFBcUIsR0FBWSxJQUFJLENBQUM7SUFDdEMsYUFBYSxDQUFVO0lBQ3ZCLHVCQUF1QixDQUFTO0lBQ2hDLG1CQUFtQixDQUFVO0lBRTdCLFlBQ2lDLG1CQUFvQyxFQUMzRCxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxFQUFxQixFQUNyQixNQUFjO1FBTFMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFpQjtRQUMzRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUksQ0FBQztJQUU3QixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDMUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN0RyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkcsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2xDLENBQUM7SUFFSCxDQUFDO0lBQ0Qsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBVTtRQUMvQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixrQkFBa0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQ3ZELHdDQUF3QztZQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sMkNBQTJDO1lBQzNDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztZQUN6RyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQzNGLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQy9GLENBQUM7WUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUM7WUFDMUYsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztZQUNoRyxPQUFPLElBQUksYUFBYSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUQsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLDBDQUEwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ3ZLLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVM7UUFDcEIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQ3JHLFlBQVksQ0FBQyxFQUFFO2dCQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2dCQUVqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzNELGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU3QywrRUFBK0U7Z0JBQy9FLHNKQUFzSjtZQUV4SixDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQzVELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQWlCLEVBQUUsU0FBdUIsRUFBRSxJQUFTO1FBQ3pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQzdFLFlBQVksQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUMzRCxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ3BHLElBQUksQ0FBQyxVQUFVLEdBQUcsdUJBQXVCLENBQUM7WUFDMUMsOEVBQThFO1lBQzlFLHFKQUFxSjtRQUN2SixDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVE7UUFDaEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ2YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWlCO1FBQzNCLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUMsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQzdFLFlBQVksQ0FBQyxFQUFFO29CQUNiLFlBQVksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ2pELGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFHaEYsMERBQTBEO29CQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ2hELE9BQU07b0JBQ1IsQ0FBQztvQkFDRCxtREFBbUQ7b0JBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDckUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQzVDLE9BQU07b0JBQ1IsQ0FBQztvQkFDRCxpRkFBaUY7b0JBQ2pGLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3JFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ2hELE9BQU07b0JBQ1IsQ0FBQztvQkFDRCxzRUFBc0U7b0JBQ3RFLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBRXBFLG1HQUFtRzt3QkFDbkcsSUFBSSxJQUFJLENBQUMsbUNBQW1DLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDcEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQzVDLE9BQU07d0JBQ1IsQ0FBQzt3QkFDRCxnREFBZ0Q7d0JBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ2hELE9BQU07b0JBQ1IsQ0FBQztnQkFFSCxDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUMxQyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsbUNBQW1DLENBQUMsT0FBZTtRQUNqRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDakcsSUFBSSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBRTFILG1FQUFtRTtRQUNuRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssdUJBQXVCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUF5QixFQUFFLE9BQU87UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsVUFBeUIsRUFBRSxPQUFPO1FBR3BELElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFHOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ3hELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFBO0lBQ25ELENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxxQkFBNkIsRUFBRSxnQkFBd0IsRUFBRSxhQUFxQjtRQUM3RixJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxZQUFpQjtRQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUM7UUFDcEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUN6RCxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7UUFDMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDbkMsQ0FBQztJQUVELHlCQUF5QixDQUFDLE9BQWlCO1FBQ3pDLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUMsT0FBTyxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsU0FBcUI7UUFDM0MsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQXFCO1FBRW5DLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEQsSUFBSSxTQUFTLENBQUMsVUFBVSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNsQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxJQUFJLFNBQVMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxHQUFTO1FBQ2xDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMscUNBQXFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEcsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLG9EQUFvRDtJQUNwRCxxQ0FBcUMsQ0FBQyxHQUFTO1FBQzdDLGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQixDQUFDLFdBQW1CO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsZUFBZSxDQUFDLFVBQXlCO1FBRXZDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQTtZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO1FBQ3BELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUNwQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsR0FBMEI7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO1FBQ2xELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUNELGVBQWUsQ0FBQyxJQUE0QjtRQUMxQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0YsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsMkJBQTJCLENBQUM7SUFDcEQsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNYLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO2dCQUN0QyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO2dCQUN4QyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07Z0JBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtnQkFDbEIsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTthQUMxQyxDQUFDLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFDdEksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDOUQsUUFBUSxDQUFDLEVBQUU7WUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQXdCLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQyxFQUNELENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QyxlQUFlLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUM7SUFFNUYsQ0FBQztJQUVELDBCQUEwQixDQUFDLE9BQWlCO1FBRTFDLElBQUksT0FBTyxJQUFJLFNBQVMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFVBQVUsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUgsQ0FBQztJQUVILENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQzt1R0ExZVUsdUJBQXVCLGtCQXdGeEIsYUFBYTsyRkF4RlosdUJBQXVCLCtuQkFkdkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQywwQkMvQnJHLHd0dEJBbWNBLHl6S0RsYXFCLHFCQUFxQiwwdUJBQ3RDLFlBQVksdXBCQUNLLG9CQUFvQiw4V0FDcEIsdUJBQXVCLGtRQUN2Qiw0QkFBNEIscVJBQzVCLHlCQUF5QixnS0FDMUMsY0FBYyx1RUFFZCxvQkFBb0I7OzJGQUlYLHVCQUF1QjtrQkFsQm5DLFNBQVM7K0JBQ0UsdUJBQXVCLGFBR3RCLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDLFdBQzFGO3dCQUNQLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzt3QkFDdkMsWUFBWTt3QkFDWixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDekMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixDQUFDO3dCQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7d0JBQzNDLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxvQkFBb0I7cUJBQ3JCLGNBQ1csSUFBSTs7MEJBMEZiLE1BQU07MkJBQUMsYUFBYTtpTUF2RkssaUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDTCxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0csV0FBVztzQkFBaEMsS0FBSzt1QkFBQyxhQUFhO2dCQUNELFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFDSyxXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ0MsVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNJLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDRyxhQUFhO3NCQUFwQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ0csY0FBYztzQkFBdEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ00sa0JBQWtCO3NCQUE5QyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFDRyxtQkFBbUI7c0JBQWhELEtBQUs7dUJBQUMscUJBQXFCO2dCQUNELGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ0gsV0FBVztzQkFBaEMsS0FBSzt1QkFBQyxhQUFhO2dCQUNJLGFBQWE7c0JBQXBDLEtBQUs7dUJBQUMsZUFBZTtnQkFDSyxnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNmLDBCQUEwQjtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IFRISVNfRVhQUiB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQge0lSZW1pc3Npb259IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlbWlzc2lvbic7XG5pbXBvcnQge0lQYXltZW50Vmlld30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudFZpZXcnO1xuaW1wb3J0IHtJT3JkZXJSZWZlcmVuY2VGZWV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSU9yZGVyUmVmZXJlbmNlRmVlJztcbmltcG9ydCB7SUZlZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQYXltZW50Vmlld1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge09yZGVyc2xpc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtJUmVmdW5kQ29udGFjdERldGFpbHN9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZENvbnRhY3REZXRhaWxzJztcbmltcG9ydCB7UG9zdFJlZnVuZFJldHJvUmVtaXNzaW9ufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1Bvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbic7XG5pbXBvcnQge0FkZFJlbWlzc2lvbkNvbXBvbmVudH0gZnJvbSAnLi4vYWRkLXJlbWlzc2lvbi9hZGQtcmVtaXNzaW9uLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UGF5bWVudFZpZXdDb21wb25lbnR9IGZyb20gJy4uL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7Q29udGFjdERldGFpbHNDb21wb25lbnR9IGZyb20gJy4uL2NvbnRhY3QtZGV0YWlscy9jb250YWN0LWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7Tm90aWZpY2F0aW9uUHJldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLXByZXZpZXcvbm90aWZpY2F0aW9uLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7Q2FzZVRyYW5zYWN0aW9uc0NvbXBvbmVudH0gZnJvbSAnLi4vY2FzZS10cmFuc2FjdGlvbnMvY2FzZS10cmFuc2FjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7Q2NkSHlwaGVuc1BpcGV9IGZyb20gJy4uLy4uL3BpcGVzL2NjZC1oeXBoZW5zLnBpcGUnO1xuaW1wb3J0IHtDYXBpdGFsaXplUGlwZX0gZnJvbSAnLi4vLi4vcGlwZXMvY2FwaXRhbGl6ZS5waXBlJztcbmltcG9ydCB7UnB4VHJhbnNsYXRpb25Nb2R1bGV9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcblxudHlwZSBQYXltZW50TGliQWxpYXMgPSBQYXltZW50TGliQ29tcG9uZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1zZXJ2aWNlLXJlcXVlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ1NFUlZJQ0VfUkVRVUVTVCcsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlcnZpY2VSZXF1ZXN0Q29tcG9uZW50KSB9XSxcbiAgaW1wb3J0czogW1xuICAgIGZvcndhcmRSZWYoKCkgPT4gQWRkUmVtaXNzaW9uQ29tcG9uZW50KSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBQYXltZW50Vmlld0NvbXBvbmVudCksXG4gICAgZm9yd2FyZFJlZigoKSA9PiBDb250YWN0RGV0YWlsc0NvbXBvbmVudCksXG4gICAgZm9yd2FyZFJlZigoKSA9PiBOb3RpZmljYXRpb25QcmV2aWV3Q29tcG9uZW50KSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENhc2VUcmFuc2FjdGlvbnNDb21wb25lbnQpLFxuICAgIENjZEh5cGhlbnNQaXBlLFxuICAgIENhcGl0YWxpemVQaXBlLFxuICAgIFJweFRyYW5zbGF0aW9uTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZVJlcXVlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUlJPTEVTJykgTE9HR0VESU5VU0VSUk9MRVM6IHN0cmluZ1tdO1xuICBASW5wdXQoJ3ZpZXdTdGF0dXMnKSB2aWV3U3RhdHVzOiBzdHJpbmc7XG4gIEBJbnB1dCgnb3JkZXJEZXRhaWwnKSBvcmRlckRldGFpbDogYW55W107XG4gIEBJbnB1dCgnb3JkZXJSZWYnKSBvcmRlclJlZjogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyU3RhdHVzJykgb3JkZXJTdGF0dXM6IHN0cmluZztcbiAgQElucHV0KCdvcmRlclBhcnR5Jykgb3JkZXJQYXJ0eTogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyQ3JlYXRlZCcpIG9yZGVyQ3JlYXRlZDogRGF0ZTtcbiAgQElucHV0KCdvcmRlckNDREV2ZW50Jykgb3JkZXJDQ0RFdmVudDogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyRmVlc1RvdGFsJykgb3JkZXJGZWVzVG90YWw6IG51bWJlcjtcbiAgQElucHV0KCdvcmRlclRvdGFsUGF5bWVudHMnKSBvcmRlclRvdGFsUGF5bWVudHM6IG51bWJlcjtcbiAgQElucHV0KCdvcmRlclJlbWlzc2lvblRvdGFsJykgb3JkZXJSZW1pc3Npb25Ub3RhbDogbnVtYmVyO1xuICBASW5wdXQoJ3BheW1lbnRHcm91cExpc3QnKSBwYXltZW50R3JvdXBMaXN0OiBJUGF5bWVudEdyb3VwO1xuICBASW5wdXQoJ3Rha2VQYXltZW50JykgdGFrZVBheW1lbnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgnY2NkQ2FzZU51bWJlcicpIGNjZENhc2VOdW1iZXI6IGJvb2xlYW47XG4gIEBJbnB1dChcImlzU2VydmljZVJlcXVlc3RcIikgaXNTZXJ2aWNlUmVxdWVzdDogc3RyaW5nO1xuICBAT3V0cHV0KCkgZ29Ub1NlcnZpY2VScXVlc3RDb21wb25lbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHZpZXdDb21wU3RhdHVzO1xuICBzZXJ2aWNlcmVxdWVzdDogc3RyaW5nO1xuICBwYXltZW50VHlwZTogc3RyaW5nO1xuICBleGNSZWZlcmVuY2U6IHN0cmluZztcbiAgcGF5bWVudEdyb3VwczogYW55W10gPSBbXTtcbiAgcGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgbm9uUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgYWxsUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgcmVtaXNzaW9uczogSVJlbWlzc2lvbltdID0gW107XG4gIHBheW1lbnRGZWVzOiBJRmVlW107XG4gIGZlZXM6IGFueTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHRvdGFsRmVlczogbnVtYmVyO1xuICB0b3RhbFBheW1lbnRzOiBudW1iZXI7XG4gIHRvdGFsTm9uT2ZmUGF5bWVudHM6IG51bWJlcjtcbiAgdG90YWxSZW1pc3Npb25zOiBudW1iZXI7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmc7XG4gIGRjbk51bWJlcjogc3RyaW5nO1xuICBwYXltZW50UmVmOiBzdHJpbmc7XG4gIGlzVHVybk9mZjogYm9vbGVhbjtcbiAgaXNSZWZ1bmRSZW1pc3Npb246IGJvb2xlYW4gPSB0cnVlO1xuICBpc1N0cmF0ZWdpY0ZpeEVuYWJsZTogYm9vbGVhbjtcbiAgaXNBZGRGZWVCdG5FbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNFeGNlcHRpb25SZWNvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVbnByb2Nlc3NlZFJlY29yZFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGV4Y2VwdGlvblJlY29yZFJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0FueUZlZUdyb3VwQXZpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0hpc3RvcmljR3JvdXBBdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNCdWxrU2NhbkVuYWJsZTtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIGlzUmVtb3ZlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmVlSWQ6IElGZWU7XG4gIGNsQW1vdW50RHVlOiBudW1iZXIgPSAwO1xuICB1bnByb2Nlc3NlZFJlY29yZENvdW50OiBudW1iZXI7XG4gIGlzRmVlUmVjb3Jkc0V4aXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbFJlZnVuZEFtb3VudDogTnVtYmVyO1xuICBjYXNlVHlwZTogU3RyaW5nO1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmdW5kQW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnQ6IElQYXltZW50O1xuICBwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXA7XG4gIHBheW1lbnRWaWV3OiBJUGF5bWVudFZpZXc7XG5cbiAgaXNBZGRSZW1pc3Npb25FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3JkZXJSZW1pc3Npb25EZXRhaWxzOiBhbnlbXSA9IFtdO1xuICBvcmRlckxldmVsRmVlczogSU9yZGVyUmVmZXJlbmNlRmVlW10gPSBbXTtcbiAgY3BvRGV0YWlsczogYW55IFtdPSBbXTtcbiAgc2VydmljZVJlcXVlc3RWYWx1ZTogc3RyaW5nO1xuICBvcmRlckFkZEJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgaXNGcm9tUGF5bWVudERldGFpbFBhZ2U6IGJvb2xlYW47XG4gIGNvbnRhY3REZXRhaWxzT2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHNcbiAgbm90aWZpY2F0aW9uOiBhbnk7XG4gIGlzQ1BPRG93bjogYm9vbGVhbjtcbiAgdGVzdDogYm9vbGVhbjtcbiAgaXNQQkE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJc3N1ZVJlZnVuZkJ0bkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWZ1bmRSZW1pc3Npb25CdG5FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsb3dlZFJvbGVzVG9BY2Nlc3NSZWZ1bmQgPSBbJ3BheW1lbnRzLXJlZnVuZC1hcHByb3ZlcicsICdwYXltZW50cy1yZWZ1bmQnXTtcbiAgaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlOiBib29sZWFuO1xuICBuYXZpZ2F0aW9ucGFnZTogc3RyaW5nO1xuICByZW1pc3Npb25GZWVBbXQ6IG51bWJlcjtcbiAgaXNDb250aW51ZUJ0bkRpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGdWxseVJlZnVuZDogYm9vbGVhbjtcbiAgdGVtcGxhdGVJbnN0cnVjdGlvblR5cGU6IHN0cmluZztcbiAgbm90aWZpY2F0aW9uUHJldmlldzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdQQVlNRU5UX0xJQicpIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkFsaWFzLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNUdXJuT2ZmID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTVFVSTk9GRjtcbiAgICB0aGlzLmlzU2VydmljZVJlcXVlc3QgPSAnZmFsc2UnO1xuICAgIGlmICh0aGlzLnZpZXdTdGF0dXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UpIHtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJSZWZzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyUmVmID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyQ0NERXZlbnRzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyQ0NERXZlbnQgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJDcmVhdGVkcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckNyZWF0ZWQgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJEZXRhaWwoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJEZXRhaWwgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJQYXJ0eXMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJQYXJ0eSA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlclJlbWlzc2lvblRvdGFscygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclJlbWlzc2lvblRvdGFsID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyRmVlc1RvdGFscygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckZlZXNUb3RhbCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvb3JkZXJUb3RhbFBheW1lbnRzcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclRvdGFsUGF5bWVudHMgPSBkYXRhKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UKSB7XG4gICAgICB0aGlzLmlzU2VydmljZVJlcXVlc3QgPSAnZmFsc2UnO1xuICAgIH1cblxuICB9XG4gIGdvVG9TZXJ2aWNlUmVxdWVzdFBhZ2UoKSB7XG4gICAgdGhpcy5nb1RvU2VydmljZVJxdWVzdENvbXBvbmVudC5lbWl0KCk7XG4gIH1cblxuICBnb1RvQ2FzZVRyYW5zYXRpb25QYWdlKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UoJ3NlcnZpY2VyZXF1ZXN0cGFnZScpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0aXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKGZhbHNlKTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUYWtlUGF5bWVudCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVDtcbiAgICBpZiAodGhpcy50YWtlUGF5bWVudCkge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzVGFrZVBheW1lbnQgPSB0aGlzLnRha2VQYXltZW50O1xuICAgIH1cbiAgICAvL3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRVJWSUNFUkVRVUVTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5pc1NlcnZpY2VSZXF1ZXN0ICE9PSAnZmFsc2UnKSB7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucmVzZXRPcmRlckRhdGEoKTtcblxuICAgIC8vIENoZWNrIHdlIG9uIFhVSVxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL2Nhc2VzL2Nhc2UtZGV0YWlscy8nKSkge1xuICAgICAgLy8gVXNlIGNjcGF5LWNhc2UtdHJhbnNhY3Rpb25zIGNvbXBvbmVudFxuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVsb2FkIFBheWJ1YmJsZSBjYXNlLXRyYW5zYWN0aW9ucyBwYWdlLlxuICAgICAgbGV0IHBhcnRVcmwgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA/ICcmaXNCdWxrU2Nhbm5pbmc9RW5hYmxlJyA6ICcmaXNCdWxrU2Nhbm5pbmc9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkYgPyAnJmlzVHVybk9mZj1FbmFibGUnIDogJyZpc1R1cm5PZmY9RGlzYWJsZSc7XG4gICAgICBpZiAodGhpcy5pc1NlcnZpY2VSZXF1ZXN0ID09PSAnZmFsc2UnKSB7XG4gICAgICAgIHBhcnRVcmwgKz0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID8gJyZ0YWtlUGF5bWVudD10cnVlJyA6ICcmdGFrZVBheW1lbnQ9ZmFsc2UnO1xuICAgICAgfVxuICAgICAgcGFydFVybCArPSB0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlID8gJyZpc1N0Rml4RW5hYmxlPUVuYWJsZScgOiAnJmlzU3RGaXhFbmFibGU9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9IHRoaXMuaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJyA/ICcmc2VydmljZXJlcXVlc3Q9dHJ1ZScgOiAnJnNlcnZpY2VyZXF1ZXN0PWZhbHNlJztcbiAgICAgIHBhcnRVcmwgKz0gYCZjYXNlVHlwZT0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRX1gO1xuICAgICAgY29uc3QgdXJsID0gYC9wYXltZW50LWhpc3RvcnkvJHt0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSfT92aWV3PWNhc2UtdHJhbnNhY3Rpb25zJnNlbGVjdGVkT3B0aW9uPSR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFTEVDVEVEX09QVElPTn0ke3BhcnRVcmx9YDtcbiAgICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XG4gICAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbiAgYWRkUmVtaXNzaW9uKGZlZTogSUZlZSkge1xuICAgIGlmICh0aGlzLmNoa0lzQWRkUmVtaXNzaW9uQnRuRW5hYmxlKGZlZSkpIHtcbiAgICAgIHRoaXMuZmVlSWQgPSBmZWU7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWRkcmVtaXNzaW9uJztcbiAgICAgIHRoaXMucGF5bWVudCA9IHRoaXMub3JkZXJEZXRhaWxbMF0ucGF5bWVudHNbMF07XG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyh0aGlzLm9yZGVyRGV0YWlsWzBdLnBheW1lbnRzWzBdLnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudEdyb3VwO1xuXG4gICAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAgIChwYXltZW50R3JvdXBPYmogPT4gcGF5bWVudEdyb3VwT2JqWydyZWZlcmVuY2UnXS5pbmNsdWRlcyh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSkpO1xuICAgICAgICAgIHRoaXMucGF5bWVudCA9IHRoaXMucGF5bWVudEdyb3VwLnBheW1lbnRzWzBdO1xuXG4gICAgICAgICAgLy8gIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAgIC8vICB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuXG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csIFwiXCIpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJlZnVuZEZvclJlbWlzc2lvbihwYXltZW50OiBJUGF5bWVudCwgcmVtaXNzaW9uOiBJUmVtaXNzaW9uW10sIGZlZXM6IGFueSkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHBheW1lbnQucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRHcm91cCA9IHBheW1lbnRHcm91cDtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9iai5yZWZlcmVuY2UgPT09IHBheW1lbnQucmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgIHRoaXMucmVtaXNzaW9ucyA9IHJlbWlzc2lvbjtcbiAgICAgICAgdGhpcy5yZW1pc3Npb25GZWVBbXQgPSBmZWVzLmZpbHRlcihkYXRhID0+IGRhdGEuY29kZSA9PT0gdGhpcy5yZW1pc3Npb25zWydmZWVfY29kZSddKVswXS5uZXRfYW1vdW50O1xuICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnYWRkcmVmdW5kZm9ycmVtaXNzaW9uJztcbiAgICAgICAgLy8gY29uc3QgcGF5bWVudEFsbG9jYXRpb24gPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50c1swXS5wYXltZW50X2FsbG9jYXRpb247XG4gICAgICAgIC8vIHRoaXMuaXNTdGF0dXNBbGxvY2F0ZWQgPSBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPiAwICYmIHBheW1lbnRBbGxvY2F0aW9uWzBdLmFsbG9jYXRpb25fc3RhdHVzID09PSAnQWxsb2NhdGVkJyB8fCBwYXltZW50QWxsb2NhdGlvbi5sZW5ndGggPT09IDA7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICApO1xuICB9XG4gIGNhbmNlbFJlbW92YWwoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICB9XG5cbiAgcmVtb3ZlRmVlKGZlZTogYW55KSB7XG4gICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kZWxldGVGZWVGcm9tUGF5bWVudEdyb3VwKGZlZSkuc3Vic2NyaWJlKFxuICAgICAgKHN1Y2Nlc3M6IGFueSkgPT4ge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5pc1JlbW92ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGlzc3VlUmVmdW5kKHBheW1lbnQ6IElQYXltZW50KSB7XG4gICAgaWYgKHBheW1lbnQgIT09IG51bGwgJiYgcGF5bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5jaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQpKSB7XG4gICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHBheW1lbnQucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cyA9IHBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAgICAgKHBheW1lbnRHcm91cE9iaiA9PiBwYXltZW50R3JvdXBPYmpbJ3JlZmVyZW5jZSddLmluY2x1ZGVzKHBheW1lbnQucmVmZXJlbmNlKSk7XG5cblxuICAgICAgICAgICAgLy8gTm8gcmVmdW5kIGFuZCBubyBvdmVyIHBheW1lbnQgLS0+IHNob3dJc3N1ZVJlZnVuZFBhZ2UoKVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA9PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50R3JvdXAsIHBheW1lbnQpO1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE5vIHJlZnVuZCBhbmQgb3ZlciBwYXltZW50IC0tPiBzaG93T3ZlclBheW1lbnQoKVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93T3ZlclBheW1lbnQocGF5bWVudEdyb3VwLCBwYXltZW50KTtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZWZ1bmRzID4gMCAgYW5kIG92ZXJQYXltZW50ID09IDAgLS0tPiByZWZ1bmRzIGFjY2VwdGVkLiBzaG93SXNzdWVSZWZ1bmRQYWdlKClcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA9PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0lzc3VlUmVmdW5kUGFnZShwYXltZW50R3JvdXAsIHBheW1lbnQpO1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZnVuZHMgPiAwIGFuZCBvdmVyUGF5bWVudCA+IDAgLS0+IHJlZnVuZHMgaW4gcHJvY2VzcyBvciBSZWplY3RlZC5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCkgJiYgdGhpcy5nZXRCYWxhbmNlVG9CZVBhaWQoKSA+IDApIHtcblxuICAgICAgICAgICAgICAvLyByZWplY3RlZCBieSBmZWUgcmVmdW5kcyA9PT0gcmVmdW5kcyBieSBmZWUgaXQgbWVhbnMgdGhhdCByZWZ1bmQgZm9yIHRoZSBjdXJyZW50IGZlZSBpcyByZWplY3RlZC5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUocGF5bWVudEdyb3VwLmZlZXMuYXQoMCkuaWQudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPdmVyUGF5bWVudChwYXltZW50R3JvdXAsIHBheW1lbnQpO1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIHJlZnVuZHMgaW4gcHJvY2VzcyBTZW50IGZvciBhcHByb3ZhbCxBcHByb3ZlZFxuICAgICAgICAgICAgICB0aGlzLnNob3dJc3N1ZVJlZnVuZFBhZ2UocGF5bWVudEdyb3VwLCBwYXltZW50KTtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUoZmVlQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlZnVuZHNCeUZlZSA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRzLmZpbHRlcihyZWZ1bmQgPT4gcmVmdW5kLmZlZV9pZHMgPT09IGZlZUNvZGUpO1xuICAgIGxldCByZWZ1bmRzQnlGZWVBbmRSZWplY3RlZCA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRzLmZpbHRlcihyZWZ1bmQgPT4gcmVmdW5kLnJlZnVuZF9zdGF0dXMubmFtZSA9PT0gJ1JlamVjdGVkJyk7XG5cbiAgICAvLyBSZWZ1bmRzID4gMCAgYW5kIG92ZXJQYXltZW50IC0tPiByZWZ1bmRzIGluIHByb2Nlc3Mgb3IgUmVqZWN0ZWQuXG4gICAgaWYgKHJlZnVuZHNCeUZlZS5sZW5ndGggPT09IHJlZnVuZHNCeUZlZUFuZFJlamVjdGVkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzQW55UmVmdW5kc0ZvclRoaXNDYXNlKCl7XG4gICAgcmV0dXJuICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kcyAhPSBudWxsKSAmJiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZHMubGVuZ3RoID4gMCk7XG4gIH1cblxuICBzaG93T3ZlclBheW1lbnQocGF5bWVudGdycDogSVBheW1lbnRHcm91cCwgcGF5bWVudCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgIHRoaXMucGF5bWVudCA9IHBheW1lbnQ7XG4gICAgdGhpcy5wYXltZW50R3JvdXBMaXN0ID0gcGF5bWVudGdycDtcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJwYXltZW50JztcbiAgfVxuXG4gIHNob3dJc3N1ZVJlZnVuZFBhZ2UocGF5bWVudGdycDogSVBheW1lbnRHcm91cCwgcGF5bWVudCkge1xuXG5cbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnJztcbiAgICB0aGlzLnBheW1lbnRGZWVzID0gcGF5bWVudGdycC5mZWVzO1xuICAgIHRoaXMucGF5bWVudCA9IHBheW1lbnQ7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRydWU7XG4gICAgdGhpcy5pc1JlZnVuZFJlbWlzc2lvbiA9IHRydWU7XG5cblxuICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudGdycDtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgIHRoaXMuaXNSZWZ1bmRSZW1pc3Npb24gPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgdGhpcy5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgdGhpcy5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIGdldEJhbGFuY2VUb0JlUGFpZCgpe1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQub3ZlclBheW1lbnRBbW91bnRcbiAgfVxuXG5cbiAgZ29Ub1BheWVtZW50VmlldyhwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZywgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50TWV0aG9kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdvVG9QYXltZW50Vmlld0NvbXBvbmVudCh7IHBheW1lbnRHcm91cFJlZmVyZW5jZSwgcGF5bWVudFJlZmVyZW5jZSwgcGF5bWVudE1ldGhvZCB9KTtcbiAgfVxuXG4gIGdvVG9QYXltZW50Vmlld0NvbXBvbmVudChwYXltZW50R3JvdXA6IGFueSkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50TWV0aG9kID0gcGF5bWVudEdyb3VwLnBheW1lbnRNZXRob2Q7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZSA9IHBheW1lbnRHcm91cC5wYXltZW50R3JvdXBSZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRSZWZlcmVuY2UgPSBwYXltZW50R3JvdXAucGF5bWVudFJlZmVyZW5jZTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldE9yZGVyUmVmKHRoaXMub3JkZXJSZWYpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDQ0RFdmVudCh0aGlzLm9yZGVyQ0NERXZlbnQpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDcmVhdGVkKHRoaXMub3JkZXJDcmVhdGVkKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRGV0YWlsKHRoaXMub3JkZXJEZXRhaWwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJQYXJ0eSh0aGlzLm9yZGVyUGFydHkpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJUb3RhbFBheW1lbnRzKHRoaXMub3JkZXJUb3RhbFBheW1lbnRzKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyUmVtaXNzaW9uVG90YWwodGhpcy5vcmRlclJlbWlzc2lvblRvdGFsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRmVlc1RvdGFsKHRoaXMub3JkZXJGZWVzVG90YWwpO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXltZW50LXZpZXcnO1xuICB9XG5cbiAgY2hrSXNJc3N1ZVJlZnVuZEJ0bkVuYWJsZShwYXltZW50OiBJUGF5bWVudCk6IGJvb2xlYW4ge1xuICAgIGlmIChwYXltZW50ICE9PSBudWxsICYmIHBheW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHBheW1lbnQuaXNzdWVfcmVmdW5kICYmIHBheW1lbnQucmVmdW5kX2VuYWJsZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hrSXNBZGRSZWZ1bmRCdG5FbmFibGUocmVtaXNzaW9uOiBJUmVtaXNzaW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHJlbWlzc2lvbiAhPT0gbnVsbCAmJiByZW1pc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHJlbWlzc2lvbi5hZGRfcmVmdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2FuSXRCZVJlZnVuZGVkKHJlbWlzc2lvbjogSVJlbWlzc2lvbik6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHJlbWlzc2lvbiAhPT0gbnVsbCAmJiByZW1pc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHJlbWlzc2lvbi5hZGRfcmVmdW5kID09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1pc3Npb24ub3ZlcmFsbF9iYWxhbmNlID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hrSXNBZGRSZW1pc3Npb25CdG5FbmFibGUoZmVlOiBJRmVlKTogYm9vbGVhbiB7XG4gICAgaWYgKGZlZSAhPT0gbnVsbCAmJiBmZWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZlZS5hZGRfcmVtaXNzaW9uICYmIGZlZS5yZW1pc3Npb25fZW5hYmxlICYmIHRoaXMuaXNUaGVDdXJyZW50UmVmdW5kSW5Qcm9jZXNzRm9yVGhpc0ZlZShmZWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyBnb2luZyB0byBjaGVjayBpZiB0aGUgY3VycmVudCByZWZ1bmQgaGFzIGJlZW4gcmVqZWN0ZWQuXG4gIC8vIElmIHRoaXMgaXMgdGhlIGNhc2UgdGhlIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZS5cbiAgaXNUaGVDdXJyZW50UmVmdW5kSW5Qcm9jZXNzRm9yVGhpc0ZlZShmZWU6IElGZWUpOiBib29sZWFue1xuICAgIC8vIE5vIHJlZnVuZHNcbiAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZHMgPT0gbnVsbCB8fCB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmlzVGhlQ3VycmVudFJlZnVuZFJlamVjdGVkRm9yVGhlRmVlKGZlZS5pZC50b1N0cmluZygpKTtcbiAgfVxuXG4gIHJlc2V0T3JkZXJEYXRhKCkge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0T3JkZXJSZWYobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNDREV2ZW50KG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDcmVhdGVkKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJEZXRhaWwobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclBhcnR5KG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJUb3RhbFBheW1lbnRzKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJSZW1pc3Npb25Ub3RhbChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRmVlc1RvdGFsKG51bGwpO1xuICB9XG5cbiAgc2VsZWN0UHltZW50T3B0aW9uKHBheW1lbnRUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBheW1lbnRUeXBlID0gcGF5bWVudFR5cGU7XG4gICAgdGhpcy5pc0NvbnRpbnVlQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuICBnb1RvUGF5bWVudFZpZXdDb21wKCkge1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5bWVudHZpZXcnO1xuICB9XG4gIGNvbnRpbnVlUGF5bWVudChwYXltZW50Z3JwOiBJUGF5bWVudEdyb3VwKSB7XG5cbiAgICBpZiAodGhpcy5wYXltZW50VHlwZSA9PT0gJ29wJykge1xuICAgICAgdGhpcy5pc0Z1bGx5UmVmdW5kID0gZmFsc2VcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucGF5bWVudFR5cGUgPT09ICdmcCcpIHtcbiAgICAgIHRoaXMuaXNGdWxseVJlZnVuZCA9IHRydWVcbiAgICAgIHRoaXMucGF5bWVudEdyb3VwTGlzdCA9IHBheW1lbnRncnA7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9IFwiXCI7XG4gICAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICB0aGlzLmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZTtcbiAgICB9XG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHMob2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLmNvbnRhY3REZXRhaWxzT2JqID0gb2JqO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcic7XG4gICAgdGhpcy5nZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRHcm91cExpc3QucGF5bWVudHNbMF0pO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICB9XG4gIGdvdG9QYXltZW50U2VsZWN0UGFnZShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnb3ZlcnBheW1lbnQnO1xuICB9XG4gIGdvdG9BZGRyZXNzUGFnZShub3RlPzogSVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgaWYgKG5vdGUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uID0geyBjb250YWN0X2RldGFpbHM6IG5vdGUsIG5vdGlmaWNhdGlvbl90eXBlOiBub3RlLm5vdGlmaWNhdGlvbl90eXBlIH07XG4gICAgfVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJyc7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVyUGF5bWVudEFkZHJlc3NDYXB0dXJlJztcbiAgfVxuICBwcm9jZXNzUmVmdW5kKCkge1xuICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICBjb25zdCBvYmogPSB0aGlzLnBheW1lbnRHcm91cExpc3QuZmVlc1swXTtcbiAgICB0aGlzLmZlZXMgPSBbe1xuICAgICAgaWQ6IG9iai5pZCxcbiAgICAgIGNvZGU6IG9iai5jb2RlLFxuICAgICAgdmVyc2lvbjogb2JqLnZlcnNpb24sXG4gICAgICBhcHBvcnRpb25fYW1vdW50OiBvYmouYXBwb3J0aW9uX2Ftb3VudCxcbiAgICAgIGNhbGN1bGF0ZWRfYW1vdW50OiBvYmouY2FsY3VsYXRlZF9hbW91bnQsXG4gICAgICB1cGRhdGVkX3ZvbHVtZTogb2JqLnVwZGF0ZWRfdm9sdW1lID8gb2JqLnVwZGF0ZWRfdm9sdW1lIDogb2JqLnZvbHVtZSxcbiAgICAgIHZvbHVtZTogb2JqLnZvbHVtZSxcbiAgICAgIHJlZnVuZF9hbW91bnQ6IHRoaXMuZ2V0T3ZlclBheW1lbnRWYWx1ZSgpXG4gICAgfV07XG4gICAgY29uc3QgcmVxdWVzdEJvZHkgPSBuZXcgUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uKHRoaXMuY29udGFjdERldGFpbHNPYmosIHRoaXMuZmVlcywgdGhpcy5wYXltZW50R3JvdXBMaXN0LnBheW1lbnRzWzBdLnJlZmVyZW5jZSwgJ1JSMDM3JyxcbiAgICAgIHRoaXMuZ2V0T3ZlclBheW1lbnRWYWx1ZSgpLCAnb3AnKTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0UmVmdW5kc1JlYXNvbihyZXF1ZXN0Qm9keSkuc3Vic2NyaWJlKFxuICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXNwb25zZSkpIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJyc7XG4gICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ3JlZnVuZGNvbmZpcm1hdGlvbnBhZ2UnO1xuICAgICAgICAgIHRoaXMucmVmdW5kUmVmZXJlbmNlID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX3JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnJlZnVuZEFtb3VudCA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9hbW91bnQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICB9XG5cbiAgZ2V0T3ZlclBheW1lbnRWYWx1ZSgpIHtcbiAgICBsZXQgZmVlc092ZXJQYXltZW50ID0gMDtcbiAgICB0aGlzLnBheW1lbnRHcm91cExpc3QuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICBmZWVzT3ZlclBheW1lbnQgKz0gZmVlLm92ZXJfcGF5bWVudDtcbiAgICB9KTtcbiAgICByZXR1cm4gZmVlc092ZXJQYXltZW50ID4gMCA/IGZlZXNPdmVyUGF5bWVudCA6IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5vdmVyUGF5bWVudEFtb3VudDtcblxuICB9XG5cbiAgZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUocGF5bWVudDogSVBheW1lbnQpOiB2b2lkIHtcblxuICAgIGlmIChwYXltZW50ID09IHVuZGVmaW5lZCB8fCBwYXltZW50ID09IG51bGwpIHtcbiAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSAnVGVtcGxhdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZShwYXltZW50LmNoYW5uZWwsIHBheW1lbnQubWV0aG9kKTtcbiAgICB9XG5cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIGhhc1BheW1lbnRzUm9sZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5MT0dHRURJTlVTRVJST0xFUy5pbmNsdWRlcygncGF5bWVudHMnKTtcbiAgfVxufVxuIiwiPCEtLSBPcmRlciBGdWxsIFZpZXcgRGV0YWlscy0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdvcmRlci1mdWxsLXZpZXcnXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic1wiPlxuICAgICAgPG9sIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3RcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3QtaXRlbVwiICpuZ0lmPVwiaXNTZXJ2aWNlUmVxdWVzdCA9PT0gJ2ZhbHNlJ1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub0Nhc2VUcmFuc2F0aW9uUGFnZSgkZXZlbnQpXCIgY2xhc3M9XCJnb3Z1ay1iYWNrLWxpbmtcIj57eyBcIkJhY2tcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3QtaXRlbVwiICpuZ0lmPVwiaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJ1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub1NlcnZpY2VSZXF1ZXN0UGFnZSgpXCIgaWQ9XCJiY2tMbmtzaXplXCIgY2xhc3M9XCJnb3Z1ay1iYWNrLWxpbmtcIj57eyBcIkJhY2tcIiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctbGFyZ2UgZ292dWstIS1tYXJnaW4tdG9wLTBcIj57eyBcIlNlcnZpY2UgcmVxdWVzdFwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRhYmxlID5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj57eyBcIlNlcnZpY2UgcmVxdWVzdCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e29yZGVyUmVmfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiU3RhdHVzXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJTdGF0dXMgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiRGF0ZSBjcmVhdGVkXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3tvcmRlckNyZWF0ZWQgfCBkYXRlOidkZCBNTU1NIHl5eXknfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPnt7IFwiUGFydHlcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57e29yZGVyUGFydHl9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+Q0NEIHt7IFwiZXZlbnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyBvcmRlckNDREV2ZW50IHwgcnB4VHJhbnNsYXRlfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBvcmRlci1jbGFzc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZSBcIj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTUxXCIgc2NvcGU9XCJjb2xcIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgPT09ICdmYWxzZSdcIj57eyBcIkZlZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTUxXCIgc2NvcGU9XCJjb2xcIiBjb2xzcGFuPVwiMlwiICpuZ0lmPVwiaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJ1wiPnt7IFwiRmVlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+e3sgXCJBbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj57eyBcIlRvdGFsXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkICBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiICpuZ0lmPVwiaXNTZXJ2aWNlUmVxdWVzdCA9PT0gJ2ZhbHNlJ1wiPjwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCIgKm5nRm9yPVwibGV0IG9yZGVyIG9mIG9yZGVyRGV0YWlsO1wiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCBmZWUgb2Ygb3JkZXIuZmVlczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgY29sLTYwIHdoaXRlc3BhY2UtaW5oZXJpdFwiICpuZ0lmPVwiaXNTZXJ2aWNlUmVxdWVzdCA9PT0gJ2ZhbHNlJ1wiPnt7IGZlZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgY29sLTYwIHdoaXRlc3BhY2UtaW5oZXJpdFwiIGNvbHNwYW49XCIyXCIgKm5nSWY9XCJpc1NlcnZpY2VSZXF1ZXN0ICE9PSAnZmFsc2UnXCI+e3tmZWUuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7ZmVlLnZvbHVtZT8gZmVlLnZvbHVtZSA6ICctJ319IFgge3sgZmVlLmNhbGN1bGF0ZWRfYW1vdW50L2ZlZS52b2x1bWV8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBmZWU/Lm5ldF9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGFsaWducmlnaHRcIiAqbmdJZj1cImlzU2VydmljZVJlcXVlc3QgPT09ICdmYWxzZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWUpXCIgICAoY2xpY2spPVwiYWRkUmVtaXNzaW9uKGZlZSlcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPnt7IFwiQWRkIHJlbWlzc2lvblwiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0Zvcj1cImxldCBvcmRlciBvZiBvcmRlckRldGFpbDtcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdJZj1cIm9yZGVyLmZlZXM/Lmxlbmd0aCA9PT0gMFwiID5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgYWxpZ25sZWZ0XCIgY29sc3Bhbj1cIjdcIj57eyBcIk5vIGZlZXMgcmVjb3JkZWRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1heHdpZHRoXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ0b3RhbGZlZXNcIj57eyBcIlRvdGFsIGZlZXNcIiB8IHJweFRyYW5zbGF0ZSB9fToge3tvcmRlckZlZXNUb3RhbCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC9wPlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICAgPCEtLSByZW1pc3Npb25zIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3JkZXIgb2Ygb3JkZXJEZXRhaWw7XCIgPlxuICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwgb3JkZXItY2xhc3NcIiAqbmdJZj1cIm9yZGVyLnJlbWlzc2lvbnNcIj5cbiAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI0IHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJIZWxwIHdpdGggZmVlcyBvciByZW1pc3Npb24gY29kZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjb2wtMjcgd2hpdGVzcGFjZS1pbmhlcml0XCIgc2NvcGU9XCJjb2xcIj57eyBcIlJlZmVyZW5jZVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciB3aGl0ZXNwYWNlLWluaGVyaXRcIiBzY29wZT1cImNvbFwiPnt7IFwiRmVlXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIHdoaXRlc3BhY2UtaW5oZXJpdFwiIHNjb3BlPVwiY29sXCI+e3sgXCJSZW1pc3Npb24gQW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICA8dGQgIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciB3aGl0ZXNwYWNlLWluaGVyaXQgcmVmdW5kQnRuXCIgc2NvcGU9XCJjb2xcIj48L3RkPlxuICAgICAgICAgPC90cj5cbiAgICAgPC90aGVhZD5cbiAgICAgPHRib2R5ICAqbmdJZj1cIm9yZGVyLnJlbWlzc2lvbnM/Lmxlbmd0aCA+IDBcIiAgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiID5cbiAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nRm9yPVwibGV0IHJlbWlzc2lvbiBvZiBvcmRlci5yZW1pc3Npb25zXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uPy5od2ZfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uPy5yZW1pc3Npb25fcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+e3sgcmVtaXNzaW9uPy5mZWVfY29kZSB9fTwvdGQ+XG4gICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHJlbWlzc2lvbj8uaHdmX2Ftb3VudCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInfX08L3RkPlxuICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCByZWZ1bmRCdG4gd2hpdGVzcGFjZS1pbmhlcml0XCIgID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAgW2Rpc2FibGVkXT1cIiFjYW5JdEJlUmVmdW5kZWQocmVtaXNzaW9uKVwiIChjbGljayk9XCJhZGRSZWZ1bmRGb3JSZW1pc3Npb24ob3JkZXIucGF5bWVudHNbMF0scmVtaXNzaW9uLG9yZGVyLmZlZXMpXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIj4gQWRkIHJlZnVuZDwvYnV0dG9uPlxuICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICA8IS0tIDx0ZCAgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCByZWZ1bmRCdG4gd2hpdGVzcGFjZS1pbmhlcml0XCIgID5cblxuICAgICAgICAgPC90ZD4gLS0+XG4gICAgICAgICA8L3RyPlxuICAgICA8L3Rib2R5PlxuXG5cbiAgIDwvdGFibGU+XG4gICA8ZGl2ICpuZ0lmPVwib3JkZXIucmVtaXNzaW9ucz8ubGVuZ3RoID09PSAwXCI+XG4gICAgPHNwYW4gPnt7IFwiTm8gaGVscCB3aXRoIGZlZXMgb3IgcmVtaXNzaW9ucy5cIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5cGFnZWFsaWduXCI+XG4gICAgICA8cD57eyBcIlRvdGFsIHJlZHVjdGlvbnNcIiB8IHJweFRyYW5zbGF0ZSB9fToge3tvcmRlclJlbWlzc2lvblRvdGFsIHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMicgIH19PC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN1bW1hcnlwYWdlYWxpZ25cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJzdW1tYXJ5cGFnZVwiPnt7IFwiVG90YWwgZmVlcyB0byBwYXlcIiB8IHJweFRyYW5zbGF0ZSB9fToge3sob3JkZXJGZWVzVG90YWwgLSBvcmRlclJlbWlzc2lvblRvdGFsKSB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInICB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuXG4gICA8IS0tUGF5bWVudHMtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3JkZXIgb2Ygb3JkZXJEZXRhaWw7XCIgPlxuICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGxcIiAqbmdJZj1cIm9yZGVyLnBheW1lbnRzICYmIGhhc1BheW1lbnRzUm9sZSgpXCI+XG4gICAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bVwiPnt7IFwiUGF5bWVudHNcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDM+XG4gICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZSBcIj5cbiAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY29sLTI1XCIgc2NvcGU9XCJjb2xcIj48L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+e3sgXCJEYXRlIGNyZWF0ZWRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj57eyBcIkFtb3VudFwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPjwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHkgICpuZ0lmPVwib3JkZXIucGF5bWVudHM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAgKm5nRm9yPVwibGV0IHBheW1lbnQgb2Ygb3JkZXIucGF5bWVudHNcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9QYXllbWVudFZpZXcocGF5bWVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UsIHBheW1lbnQucmVmZXJlbmNlLCBwYXltZW50Lm1ldGhvZClcIj57eyBcIlJldmlld1wiIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIHdoaXRlc3BhY2UtaW5oZXJpdFwiPnt7IHBheW1lbnQ/LmRhdGVfY3JlYXRlZCB8IGRhdGU6J2RkIE1NTSB5eXl5JyB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCB3aGl0ZXNwYWNlLWluaGVyaXRcIj57eyBwYXltZW50Py5hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBhbGlnbnJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQpXCIgICAoY2xpY2spPVwiaXNzdWVSZWZ1bmQocGF5bWVudClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeVwiPnt7IFwiSXNzdWUgcmVmdW5kXCIgfCBycHhUcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8IS0tIDx0ZCAgKm5nSWY9XCIhY2hrSXNzdWVSZWZ1bmRCdG5FbmFibGUocGF5bWVudClcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICAgICAgICAgIDwvdGQ+IC0tPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG5cbiAgPGRpdiAqbmdJZj1cIm9yZGVyLnBheW1lbnRzID09PSB1bmRlZmluZWQgfHwgb3JkZXIucGF5bWVudHMgPT09IG51bGxcIj5cbiAgICAgIDwhLS0gPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW0gbWFyLTE3XCI+UGF5bWVudHM8L2gzPiAtLT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFyLTE3XCIgPnt7IFwiTm8gUGF5bWVudHMgcmVjb3JkZWRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJ0b3RhbFBheVwiPnt7IFwiVG90YWwgZmVlcyBsZWZ0IHRvIHBheVwiIHwgcnB4VHJhbnNsYXRlIH19OiA8Yj57eygob3JkZXJGZWVzVG90YWwgLSBvcmRlclJlbWlzc2lvblRvdGFsKS0gb3JkZXJUb3RhbFBheW1lbnRzICl8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC9iPiA8L3A+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxjY3BheS1hZGQtcmVtaXNzaW9uICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ2FkZHJlbWlzc2lvbicgJiYgZmVlSWRcIlxuW2lzVHVybk9mZl09XCJpc1R1cm5PZmZcIlxuW2lzU3RyYXRlZ2ljRml4RW5hYmxlXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcblt2aWV3Q29tcFN0YXR1c109IFwidmlld1N0YXR1c1wiXG5bZmVlXT1cImZlZUlkXCJcbltvcmRlclN0YXR1c10gPVwib3JkZXJTdGF0dXNcIlxuW3BhaWRBbW91bnRdPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5baXNSZWZ1bmRSZW1pc3Npb25dPVwiaXNSZWZ1bmRSZW1pc3Npb25cIlxuW2Nhc2VUeXBlXT1cImNhc2VUeXBlXCJcbltpc1NlcnZpY2VSZXF1ZXN0XSA9IFwiaXNTZXJ2aWNlUmVxdWVzdFwiXG5bcGF5bWVudEdyb3VwUmVmXT1cIm9yZGVyUmVmXCJcbltpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VdID0gXCJ0cnVlXCJcbltwYXltZW50XSA9IFwicGF5bWVudFwiXG5bY2NkQ2FzZU51bWJlcl09XCJjY2RDYXNlTnVtYmVyXCJcbltvcmRlclJlZl0gPSBcIm9yZGVyUmVmXCJcbltvcmRlclN0YXR1c10gPSBcIm9yZGVyU3RhdHVzXCJcbltvcmRlckNyZWF0ZWRdID0gXCJvcmRlckNyZWF0ZWRcIlxuW29yZGVyUGFydHldID0gXCJvcmRlclBhcnR5XCJcbltvcmRlckNDREV2ZW50XSA9IFwib3JkZXJDQ0RFdmVudFwiXG5bb3JkZXJEZXRhaWxdID0gXCJvcmRlckRldGFpbFwiXG5bTE9HR0VESU5VU0VSUk9MRVNdID0gXCJMT0dHRURJTlVTRVJST0xFU1wiXG5bdGFrZXBheW1lbnRdID0gXCJ0YWtlUGF5bWVudFwiXG5bb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG5bb3JkZXJUb3RhbFBheW1lbnRzXSA9IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltvcmRlclJlbWlzc2lvblRvdGFsXSA9IFwib3JkZXJSZW1pc3Npb25Ub3RhbFwiXG4+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPGNjcGF5LWFkZC1yZW1pc3Npb24gKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnaXNzdWVyZWZ1bmQnICYmIHBheW1lbnRcIlxuW2lzVHVybk9mZl09XCJpc1R1cm5PZmZcIlxuW2lzU3RyYXRlZ2ljRml4RW5hYmxlXT1cImlzU3RyYXRlZ2ljRml4RW5hYmxlXCJcblt2aWV3Q29tcFN0YXR1c109IFwidmlld1N0YXR1c1wiXG5baXNGcm9tU2VydmljZVJlcXVlc3RQYWdlXT1cImlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZVwiXG5baXNGcm9tUGF5bWVudERldGFpbFBhZ2VdID0gXCJpc0Zyb21QYXltZW50RGV0YWlsUGFnZVwiXG5bcGF5bWVudF09XCJwYXltZW50XCJcbltvcmRlclN0YXR1c10gPVwib3JkZXJTdGF0dXNcIlxuW3BhaWRBbW91bnRdPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5baXNSZWZ1bmRSZW1pc3Npb25dPVwiaXNSZWZ1bmRSZW1pc3Npb25cIlxuW2Nhc2VUeXBlXT1cImNhc2VUeXBlXCJcbltwYXltZW50R3JvdXBSZWZdPVwib3JkZXJSZWZcIlxuW2NjZENhc2VOdW1iZXJdPVwiY2NkQ2FzZU51bWJlclwiXG5bb3JkZXJSZWZdID0gXCJvcmRlclJlZlwiXG5bb3JkZXJTdGF0dXNdID0gXCJvcmRlclN0YXR1c1wiXG5bb3JkZXJDcmVhdGVkXSA9IFwib3JkZXJDcmVhdGVkXCJcbltvcmRlclBhcnR5XSA9IFwib3JkZXJQYXJ0eVwiXG5bb3JkZXJDQ0RFdmVudF0gPSBcIm9yZGVyQ0NERXZlbnRcIlxuW29yZGVyRGV0YWlsXSA9IFwib3JkZXJEZXRhaWxcIlxuW2lzRnVsbHlSZWZ1bmRdID0gXCJpc0Z1bGx5UmVmdW5kXCJcbltmZWVzXSA9IFwicGF5bWVudEZlZXNcIlxuW0xPR0dFRElOVVNFUlJPTEVTXSA9IFwiTE9HR0VESU5VU0VSUk9MRVNcIlxuW2lzRnJvbVJlZnVuZExpc3RQYWdlXSA9IFwiZmFsc2VcIlxuW3Rha2VwYXltZW50XSA9IFwidGFrZVBheW1lbnRcIlxuW29yZGVyRmVlc1RvdGFsXSA9IFwib3JkZXJGZWVzVG90YWxcIlxuW29yZGVyVG90YWxQYXltZW50c10gPSBcIm9yZGVyVG90YWxQYXltZW50c1wiXG5bb3JkZXJSZW1pc3Npb25Ub3RhbF0gPSBcIm9yZGVyUmVtaXNzaW9uVG90YWxcIj48L2NjcGF5LWFkZC1yZW1pc3Npb24+XG5cbjxjY3BheS1hZGQtcmVtaXNzaW9uICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ2FkZHJlZnVuZGZvcnJlbWlzc2lvbicgJiYgcGF5bWVudFwiXG5baXNUdXJuT2ZmXT1cImlzVHVybk9mZlwiXG5baXNTdHJhdGVnaWNGaXhFbmFibGVdPVwiaXNTdHJhdGVnaWNGaXhFbmFibGVcIlxuW3ZpZXdDb21wU3RhdHVzXT0gXCJ2aWV3U3RhdHVzXCJcbltwYXltZW50XT1cInBheW1lbnRcIlxuW29yZGVyU3RhdHVzXSA9XCJvcmRlclN0YXR1c1wiXG5bcGFpZEFtb3VudF09IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltpc1JlZnVuZFJlbWlzc2lvbl09XCJpc1JlZnVuZFJlbWlzc2lvblwiXG5bY2FzZVR5cGVdPVwiY2FzZVR5cGVcIlxuW2ZlZWFtb3VudF09XCJyZW1pc3Npb25GZWVBbXRcIlxuW3JlbWlzc2lvbl0gPSBcInJlbWlzc2lvbnNcIlxuW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV09XCJpc1NlcnZpY2VSZXF1ZXN0XCJcbltjY2RDYXNlTnVtYmVyXT1cImNjZENhc2VOdW1iZXJcIlxuW29yZGVyUmVmXSA9IFwib3JkZXJSZWZcIlxuW29yZGVyU3RhdHVzXSA9IFwib3JkZXJTdGF0dXNcIlxuW29yZGVyQ3JlYXRlZF0gPSBcIm9yZGVyQ3JlYXRlZFwiXG5bb3JkZXJQYXJ0eV0gPSBcIm9yZGVyUGFydHlcIlxuW29yZGVyQ0NERXZlbnRdID0gXCJvcmRlckNDREV2ZW50XCJcbltvcmRlckRldGFpbF0gPSBcIm9yZGVyRGV0YWlsXCJcbltMT0dHRURJTlVTRVJST0xFU10gPSBcIkxPR0dFRElOVVNFUlJPTEVTXCJcblt0YWtlcGF5bWVudF0gPSBcInRha2VQYXltZW50XCJcbltvcmRlckZlZXNUb3RhbF0gPSBcIm9yZGVyRmVlc1RvdGFsXCJcbltvcmRlclRvdGFsUGF5bWVudHNdID0gXCJvcmRlclRvdGFsUGF5bWVudHNcIlxuW29yZGVyUmVtaXNzaW9uVG90YWxdID0gXCJvcmRlclJlbWlzc2lvblRvdGFsXCI+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuXG48Y2NwYXktcGF5bWVudC12aWV3ICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ3BheW1lbnQtdmlldydcIlxuW0xPR0dFRElOVVNFUlJPTEVTXSA9IFwiTE9HR0VESU5VU0VSUk9MRVNcIlxuW2lzVHVybk9mZl0gPSBcImlzVHVybk9mZlwiXG5baXNUYWtlUGF5bWVudF0gPSBcInRha2VQYXltZW50XCJcbltjYXNlVHlwZV0gPSBcImNhc2VUeXBlXCJcbltvcmRlclJlZl0gPSBcIm9yZGVyUmVmXCJcbltvcmRlclN0YXR1c10gPSBcIm9yZGVyU3RhdHVzXCJcbltvcmRlckNyZWF0ZWRdID0gXCJvcmRlckNyZWF0ZWRcIlxuW29yZGVyUGFydHldID0gXCJvcmRlclBhcnR5XCJcbltvcmRlckNDREV2ZW50XSA9IFwib3JkZXJDQ0RFdmVudFwiXG5bb3JkZXJEZXRhaWxdID0gXCJvcmRlckRldGFpbFwiXG5bb3JkZXJGZWVzVG90YWxdID0gXCJvcmRlckZlZXNUb3RhbFwiXG5bb3JkZXJUb3RhbFBheW1lbnRzXSA9IFwib3JkZXJUb3RhbFBheW1lbnRzXCJcbltvcmRlclJlbWlzc2lvblRvdGFsXSA9IFwib3JkZXJSZW1pc3Npb25Ub3RhbFwiXG5baXNTZXJ2aWNlUmVxdWVzdF0gPSBcImlzU2VydmljZVJlcXVlc3RcIj5cbjwvY2NwYXktcGF5bWVudC12aWV3PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ2ZlZVJlbW92YWxDb25maXJtYXRpb24nXCI+XG48ZGl2IGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0XCI+XG4gIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+ITwvc3Bhbj5cbiAgPHN0cm9uZyBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19hc3Npc3RpdmVcIj57eyBcIldhcm5pbmdcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICB7eyBcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmZWU/XCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgPC9zdHJvbmc+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JiXCI+XG4gIDxmb3JtIG5vdmFsaWRhdGU+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZhbCgpXCI+XG4gICAgICB7eyBcIkNhbmNlbFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJpc1JlbW92ZUJ0bkRpc2FibGVkXCJcbiAgICBbbmdDbGFzc109J2lzUmVtb3ZlQnRuRGlzYWJsZWQgPyBcImJ1dHRvbiBidXR0b24tLWRpc2FibGVkIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTFcIiA6IFwiYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTFcIidcbiAgICAoY2xpY2spPVwicmVtb3ZlRmVlKGZlZUlkKVwiPlxuICAgICAge3sgXCJSZW1vdmVcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Zvcm0+XG48L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwib3Zlci1wYXltZW50XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q29tcFN0YXR1cyA9PT0gJ292ZXJwYXltZW50J1wiPlxuICAgIDxpbnB1dCAjbXlJbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdpRnJhbWVEcml2ZW5JbWFnZVZhbHVlJyB2YWx1ZT0nT1ZFUlBBWU1FTlRQQUdFJz5cbiAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCI+e3sgXCJJc3N1ZSByZWZ1bmRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgPGgxIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj57eyBcIkNhc2UgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7Y2NkQ2FzZU51bWJlciB8IGNjZEh5cGhlbnMgfX08L2gxPlxuICAgIDxzcGFuIGlkPVwiaG93LWNvbnRhY3RlZC1jb25kaXRpb25hbC1oaW50IGdvdnVrLWZvbnQxOXB4XCIgY2xhc3M9XCJmb3JtLWhpbnRcIj5cbiAgICAgIHt7IFwiUGF5bWVudCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fToge3twYXltZW50R3JvdXBMaXN0Py5wYXltZW50c1swXT8ucmVmZXJlbmNlfX1cbiAgICA8L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj57eyBcIlNlbGVjdCBwYXltZW50IHRvIHJlZnVuZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc1wiIGRhdGEtbW9kdWxlPVwiZ292dWstcmFkaW9zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCIgaWQ9XCJvdmVyLXBheW1lbnRcIiBuYW1lPVwib3Zlci1wYXltZW50XCIgdHlwZT1cInJhZGlvXCIgKGNsaWNrKT1cInNlbGVjdFB5bWVudE9wdGlvbignb3AnKVwiIHZhbHVlPVwib3BcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIGdvdnVrLWZvbnQxOXB4XCIgZm9yPVwid2hlcmUtZG8teW91LWxpdmVcIj5cbiAgICAgICAgICAgIHt7IFwiT3ZlciBwYXltZW50XCIgfCBycHhUcmFuc2xhdGUgfX0gwqN7e2dldE92ZXJQYXltZW50VmFsdWUoKSB8IG51bWJlcjonLjInfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImZ1bGwtcGF5bWVudFwiIG5hbWU9XCJvdmVyLXBheW1lbnRcIiB0eXBlPVwicmFkaW9cIiAoY2xpY2spPVwic2VsZWN0UHltZW50T3B0aW9uKCdmcCcpXCIgdmFsdWU9XCJmcFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstZm9udDE5cHhcIiBmb3I9XCJ3aGVyZS1kby15b3UtbGl2ZS0yXCI+XG4gICAgICAgICAgICB7eyBcIkZ1bGwgcGF5bWVudFwiIHwgcnB4VHJhbnNsYXRlIH19IMKje3twYXltZW50R3JvdXBMaXN0Py5wYXltZW50c1swXT8uYW1vdW50IHwgbnVtYmVyOicuMid9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgb3Zlci1wYXltZW50LWFsaWdubWVudCBnb3Z1ay1mb250MTlweFwiXG4gICAgICAgIChjbGljayk9XCJnb1RvUGF5bWVudFZpZXdDb21wKClcIj4ge3sgXCJQcmV2aW91c1wiIHwgcnB4VHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImNvbnRpbnVlUGF5bWVudChwYXltZW50R3JvdXBMaXN0KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0NvbnRpbnVlQnRuRGlzYWJsZWRcIlxuICAgICAgICBbbmdDbGFzc109J2lzQ29udGludWVCdG5EaXNhYmxlZCA/IFwiYnV0dG9uIGJ1dHRvbi0tZGlzYWJsZWQgZ292dWstIS1tYXJnaW4tcmlnaHQtMSBnb3Z1ay1mb250MTlweFwiIDogXCJidXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMSBnb3Z1ay1mb250MTlweFwiJ1xuICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvblwiPiB7eyBcIkNvbnRpbnVlXCIgfCBycHhUcmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDb21wU3RhdHVzID09PSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSdcIj5cbiAgICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBpZD0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J09WRVJQQVlNRU5UQUREUkVTU0NBUFRVUkVQQUdFJz5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57eyBcIklzc3VlIHJlZnVuZFwiIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW0gZ292dWstZm9udDE5cHhcIj57eyBcIkNhc2UgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7Y2NkQ2FzZU51bWJlciB8IGNjZEh5cGhlbnMgfX08L2gyPlxuICAgIDxzcGFuIGlkPVwiaG93LWNvbnRhY3RlZC1jb25kaXRpb25hbC1oaW50XCIgY2xhc3M9XCJnb3Z1ay1oaW50IGdvdnVrLWZvbnQxOXB4XCI+XG4gICAgICB7eyBcIlBheW1lbnQgcmVmZXJlbmNlXCIgfCBycHhUcmFuc2xhdGUgfX06IHt7cGF5bWVudEdyb3VwTGlzdD8ucGF5bWVudHNbMF0/LnJlZmVyZW5jZX19XG4gICAgPC9zcGFuPlxuICA8Y2NwYXktY29udGFjdC1kZXRhaWxzXG4gIFthZGRyZXNzT2JqXSA9IG5vdGlmaWNhdGlvblxuICAoYXNzaWduQ29udGFjdERldGFpbHMpPVwiZ2V0Q29udGFjdERldGFpbHMoJGV2ZW50KVwiXG4gIChyZWRpcmVjdFRvSXNzdWVSZWZ1bmQpPVwiZ290b1BheW1lbnRTZWxlY3RQYWdlKCRldmVudClcIiA+PC9jY3BheS1jb250YWN0LWRldGFpbHM+XG4gIDxwPlxuICAgICAgPGEgKGNsaWNrKT1cImdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstbGlua1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAge3sgXCJDYW5jZWxcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9hPlxuICA8L3A+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q29tcFN0YXR1cyA9PT0gJ292ZXJwYXltZW50Y2hlY2thbmRhbnN3ZXInXCI+XG4gICAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdBRERSRUZVTkRGT1JSRU1JU1NJT04nPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIj5cblxuICAgICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCI+IHt7IFwiQ2hlY2sgeW91ciBhbnN3ZXJzXCIgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlIGdvdnVrLXRhYmxlLW1iXCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiUGF5bWVudCByZWZlcmVuY2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7cGF5bWVudEdyb3VwTGlzdC5wYXltZW50c1swXS5yZWZlcmVuY2V9fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IFwiUGF5bWVudCBhbW91bnRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7cGF5bWVudEdyb3VwTGlzdC5wYXltZW50c1swXS5hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJGZWUgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3BheW1lbnRHcm91cExpc3Q/LmZlZXNbMF0/Lm5ldF9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJSZWZ1bmQgYW1vdW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e2dldE92ZXJQYXltZW50VmFsdWUoKSB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbCBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBcIlJlZnVuZCByZWFzb25cIiB8IHJweFRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IFwiT3ZlciBwYXltZW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJTZW5kIHRvXCIgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3tvcmRlclBhcnR5fX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgXCJTZW5kIHZpYVwiIHwgcnB4VHJhbnNsYXRlIH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgd2hpdGVzcGFjZS1pbmhlcml0XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRhY3REZXRhaWxzT2JqPy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGhcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+RW1haWw8L3N0cm9uZz5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICB7e2NvbnRhY3REZXRhaWxzT2JqPy5lbWFpbD8udHJpbSgpfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdERldGFpbHNPYmo/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnTEVUVEVSJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGhcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+UG9zdDwvc3Ryb25nPlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIHt7Y29udGFjdERldGFpbHNPYmo/LmFkZHJlc3NfbGluZT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5jaXR5Py50cmltKCl9fSZuYnNwO3t7Y29udGFjdERldGFpbHNPYmo/LmNvdW50eT8udHJpbSgpfX0mbmJzcDt7e2NvbnRhY3REZXRhaWxzT2JqPy5jb3VudHJ5Py50cmltKCl9fSZuYnNwO3t7Y29udGFjdERldGFpbHNPYmo/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhIChjbGljayk9XCJnb3RvQWRkcmVzc1BhZ2UoY29udGFjdERldGFpbHNPYmopXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgPkNoYW5nZTwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+Tm90aWZpY2F0aW9uPC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3RlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlfX1cbiAgICAgICAgICAgIDxhICpuZ0lmPVwiIW5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHJpZ2h0XCIgKGNsaWNrKT1cInNob3dOb3RpZmljYXRpb25QcmV2aWV3KClcIj5cbiAgICAgICAgICAgICAgUHJldmlld1xuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJub3RpZmljYXRpb25QcmV2aWV3XCIgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGluayByaWdodFwiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICAgIEhpZGUgUHJldmlld1xuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3RhYmxlPlxuXG4gICAgPGFwcC1ub3RpZmljYXRpb24tcHJldmlldyAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIlxuICAgIFtwYXltZW50XT1cInBheW1lbnRHcm91cExpc3QucGF5bWVudHNbMF1cIlxuICAgIFtjb250YWN0RGV0YWlsc109XCJjb250YWN0RGV0YWlsc09ialwiXG4gICAgW3JlZnVuZFJlYXNvbl09XCInUlIwMzcnXCJcbiAgICBbcmVmdW5kQW1vdW50XT1cImdldE92ZXJQYXltZW50VmFsdWUoKVwiPjwvYXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3PlxuXG5cbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBvdmVyLXBheW1lbnQtYWxpZ25tZW50IGdvdnVrLWZvbnQxOXB4XCIgKGNsaWNrKT1cImdvdG9BZGRyZXNzUGFnZShjb250YWN0RGV0YWlsc09iailcIj5QcmV2aW91czwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgW25nQ2xhc3NdPSdpc0NvbnRpbnVlQnRuRGlzYWJsZWQgPyBcImJ1dHRvbiBidXR0b24tLWRpc2FibGVkIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTEgZ292dWstZm9udDE5cHhcIiA6IFwiYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTEgZ292dWstZm9udDE5cHhcIidcbiAgICAoY2xpY2spPVwicHJvY2Vzc1JlZnVuZCgpXCI+XG4gICAgICBTdWJtaXQgcmVmdW5kXG4gICAgPC9idXR0b24+XG4gICAgPHA+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAgKGNsaWNrKT1cImdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstbGluayBnb3Z1ay1mb250MTlweFwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9hPlxuICAgIDwvcD5cblxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdyZWZ1bmRjb25maXJtYXRpb25wYWdlJyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJwYXltZW50JyAmJiB2aWV3Q29tcFN0YXR1cyAhPT0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnICYmIHZpZXdDb21wU3RhdHVzICE9PSAnb3ZlcnBheW1lbnRjaGVja2FuZGFuc3dlcidcIj5cbiAgICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBpZD0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J1JFVFJPUkVNSVNTSU9OUkVGVU5EQ09ORklSTUFUSU9OUEFHRSc+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93IHBhZ2VzaXplXCI+XG4gICAgICA8ZGl2ID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLS1jb25maXJtYXRpb25cIj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1wYW5lbF9zZXJ2aWNlX3JlcXVlc3RfdGl0bGVcIj5cbiAgICAgICAgICAgIFJlZnVuZCBzdWJtaXR0ZWRcbiAgICAgICAgICA8L2gxPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsX19ib2R5XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHkgd2hpdGVcIj48c3Ryb25nIGNsYXNzPVwid2hpdGVcIj5SZWZ1bmQgcmVmZXJlbmNlOiB7e3JlZnVuZFJlZmVyZW5jZX19PC9zdHJvbmc+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5XaGF0IGhhcHBlbnMgbmV4dDwvaDI+XG4gICAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgICAgIEEgcmVmdW5kIHJlcXVlc3QgZm9yIHt7cmVmdW5kQW1vdW50ICB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHdpbGwgYmUgcGFzc2VkIHRvIGEgdGVhbSBsZWFkZXIgdG8gYXBwcm92ZS5cbiAgICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstbGluayBwb2ludGVyXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5cbiAgICAgICAgUmV0dXJuIHRvIGNhc2VcbiAgICA8L2E+XG4gICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbjxjY3BheS1jYXNlLXRyYW5zYWN0aW9ucyAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdjYXNlLXRyYW5zYWN0aW9ucydcIlxuW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV09XCJpc1NlcnZpY2VSZXF1ZXN0XCJcbltMT0dHRURJTlVTRVJST0xFU10gPSBcIkxPR0dFRElOVVNFUlJPTEVTXCJcbltpc1Rha2VQYXltZW50XSA9IFwidGFrZVBheW1lbnRcIj5cbjwvY2NwYXktY2FzZS10cmFuc2FjdGlvbnM+XG4iXX0=
|
|
@@ -2138,7 +2138,7 @@ class CaseTransactionsComponent {
|
|
|
2138
2138
|
this.calculateOrderFeesAmounts();
|
|
2139
2139
|
this.calculateRefundAmount();
|
|
2140
2140
|
this.calculateAmountDueTo();
|
|
2141
|
-
this.
|
|
2141
|
+
this.calculateOverpaymentBasedOnRemission();
|
|
2142
2142
|
this.validateAmountDueTo();
|
|
2143
2143
|
this.calculateOverpaymentBaseOnAcceptedRefund();
|
|
2144
2144
|
if (this.isFromServiceRequestPage) {
|
|
@@ -2166,7 +2166,7 @@ class CaseTransactionsComponent {
|
|
|
2166
2166
|
this.calculateAmounts();
|
|
2167
2167
|
this.calculateOrderFeesAmounts();
|
|
2168
2168
|
this.calculateAmountDueTo();
|
|
2169
|
-
this.
|
|
2169
|
+
this.calculateOverpaymentBasedOnRemission();
|
|
2170
2170
|
this.validateAmountDueTo();
|
|
2171
2171
|
this.calculateOverpaymentBaseOnAcceptedRefund();
|
|
2172
2172
|
this.totalRefundAmount = this.calculateRefundAmount();
|
|
@@ -2456,7 +2456,8 @@ class CaseTransactionsComponent {
|
|
|
2456
2456
|
});
|
|
2457
2457
|
return result;
|
|
2458
2458
|
}
|
|
2459
|
-
|
|
2459
|
+
calculateOverpaymentBasedOnRemission() {
|
|
2460
|
+
// This sept is done to calculate a possible over payment due to remissions on fees.
|
|
2460
2461
|
if (this.isThereRemissions()) {
|
|
2461
2462
|
let newValue = this.totalPayments - (this.orderFeesTotal - this.totalRemissions);
|
|
2462
2463
|
if (newValue > 0) {
|
|
@@ -2480,6 +2481,7 @@ class CaseTransactionsComponent {
|
|
|
2480
2481
|
}
|
|
2481
2482
|
}
|
|
2482
2483
|
calculateOverpaymentBaseOnAcceptedRefund() {
|
|
2484
|
+
// This sept is done to re calculate the final over payments values based on accepted refunds.
|
|
2483
2485
|
this.paymentGroups.forEach(paymentGroup => {
|
|
2484
2486
|
if (paymentGroup.refunds != null && paymentGroup.refunds.length > 0) {
|
|
2485
2487
|
this.paymentLibComponent.refunds = paymentGroup.refunds;
|
|
@@ -3159,12 +3161,21 @@ class ServiceRequestComponent {
|
|
|
3159
3161
|
}
|
|
3160
3162
|
chkIsAddRemissionBtnEnable(fee) {
|
|
3161
3163
|
if (fee !== null && fee !== undefined) {
|
|
3162
|
-
return fee.add_remission && fee.remission_enable;
|
|
3164
|
+
return fee.add_remission && fee.remission_enable && this.isTheCurrentRefundInProcessForThisFee(fee);
|
|
3163
3165
|
}
|
|
3164
3166
|
else {
|
|
3165
3167
|
return false;
|
|
3166
3168
|
}
|
|
3167
3169
|
}
|
|
3170
|
+
// This method is going to check if the current refund has been rejected.
|
|
3171
|
+
// If this is the case the button should be disable.
|
|
3172
|
+
isTheCurrentRefundInProcessForThisFee(fee) {
|
|
3173
|
+
// No refunds
|
|
3174
|
+
if (this.paymentLibComponent.refunds == null || this.paymentLibComponent.refunds.length === 0) {
|
|
3175
|
+
return false;
|
|
3176
|
+
}
|
|
3177
|
+
return !this.isTheCurrentRefundRejectedForTheFee(fee.id.toString());
|
|
3178
|
+
}
|
|
3168
3179
|
resetOrderData() {
|
|
3169
3180
|
this.OrderslistService.setOrderRef(null);
|
|
3170
3181
|
this.OrderslistService.setorderCCDEvent(null);
|
|
@@ -4910,12 +4921,21 @@ class PaymentViewComponent {
|
|
|
4910
4921
|
}
|
|
4911
4922
|
chkIsAddRemissionBtnEnable(fee) {
|
|
4912
4923
|
if (fee !== null && fee !== undefined) {
|
|
4913
|
-
return fee.add_remission && fee.remission_enable;
|
|
4924
|
+
return fee.add_remission && fee.remission_enable && this.isTheCurrentRefundInProcessForThisFee(fee);
|
|
4914
4925
|
}
|
|
4915
4926
|
else {
|
|
4916
4927
|
return false;
|
|
4917
4928
|
}
|
|
4918
4929
|
}
|
|
4930
|
+
// This method is going to check if the current refund has been rejected.
|
|
4931
|
+
// If this is the case the button should be disable.
|
|
4932
|
+
isTheCurrentRefundInProcessForThisFee(fee) {
|
|
4933
|
+
// No refunds
|
|
4934
|
+
if (this.paymentLibComponent.refunds == null || this.paymentLibComponent.refunds.length === 0) {
|
|
4935
|
+
return false;
|
|
4936
|
+
}
|
|
4937
|
+
return !this.isTheCurrentRefundRejectedForTheFee(fee.id.toString());
|
|
4938
|
+
}
|
|
4919
4939
|
selectPymentOption(paymentType) {
|
|
4920
4940
|
this.paymentType = paymentType;
|
|
4921
4941
|
this.isContinueBtnDisabled = false;
|