@colijnit/transaction 256.1.13 → 256.1.15
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/bundles/colijnit-transaction.umd.js +198 -65
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/component/avatar/avatar.component.js +7 -3
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.js +30 -27
- package/esm2015/lib/component/purchase-confirmation-lines/purchase-confirmation-lines.component.js +37 -33
- package/esm2015/lib/component/purchase-confirmation-lines/purchase-confirmation-lines.module.js +4 -3
- package/esm2015/lib/component/relation/relation-contact-details/relation-contact-details.component.js +3 -1
- package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.js +84 -42
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.js +16 -5
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.component.js +6 -6
- package/esm2015/lib/component/transaction-line-image-and-description/transaction-line-image-and-description.component.js +3 -2
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +19 -3
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-purchase-reservation-order-tile/transaction-purchase-reservation-order-tile.component.js +2 -2
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-pos-order-tile/transaction-search-pos-order-tile.component.js +64 -63
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-purchase-order-tile/transaction-search-purchase-order-tile.component.js +24 -22
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +27 -29
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-quotation-tile/transaction-search-sales-quotation-tile.component.js +23 -19
- package/esm2015/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.js +33 -4
- package/esm2015/lib/enum/icon.enum.js +3 -1
- package/esm2015/lib/model/icon-svg.js +3 -1
- package/esm2015/lib/service/transaction-base.service.js +4 -1
- package/esm2015/lib/service/transaction.service.js +11 -1
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +383 -249
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/avatar/avatar.component.d.ts +1 -0
- package/lib/component/purchase-confirmation-lines/style/_layout.scss +70 -25
- package/lib/component/purchase-confirmation-lines/style/_material-definition.scss +21 -1
- package/lib/component/service-wizard-qa/question-answer-item/style/_material-definition.scss +1 -1
- package/lib/component/transaction-line/transaction-overview-line/style/_layout.scss +126 -1
- package/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.d.ts +1 -0
- package/lib/component/transaction-line-action-buttons/style/_layout.scss +1 -1
- package/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.d.ts +4 -1
- package/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.d.ts +3 -1
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_layout.scss +100 -46
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_material-definition.scss +10 -7
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_theme.scss +7 -3
- package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.d.ts +4 -1
- package/lib/enum/icon.enum.d.ts +2 -0
- package/lib/service/transaction.service.d.ts +1 -0
- package/package.json +3 -3
- package/colijnit-transaction-256.1.12.tgz +0 -0
|
@@ -78,7 +78,7 @@ export class AvatarComponent {
|
|
|
78
78
|
else {
|
|
79
79
|
this._setImageFromRelation();
|
|
80
80
|
}
|
|
81
|
-
this.
|
|
81
|
+
this._detectChanges();
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
84
|
_setImageFromRelation() {
|
|
@@ -125,7 +125,7 @@ export class AvatarComponent {
|
|
|
125
125
|
if (content && this._image) {
|
|
126
126
|
this._image.thumbnailBody = content;
|
|
127
127
|
this.imageSrc = this.image.thumbnailBodyAsDataUri;
|
|
128
|
-
this.
|
|
128
|
+
this._detectChanges();
|
|
129
129
|
return true;
|
|
130
130
|
}
|
|
131
131
|
else {
|
|
@@ -138,6 +138,10 @@ export class AvatarComponent {
|
|
|
138
138
|
if (this.relation) {
|
|
139
139
|
this.backgroundColor = this._colorSequenceService.getRandomColor(this.relation.relationId);
|
|
140
140
|
}
|
|
141
|
+
this._detectChanges();
|
|
142
|
+
}
|
|
143
|
+
_detectChanges() {
|
|
144
|
+
this._changeDetector.markForCheck();
|
|
141
145
|
this._changeDetector.detectChanges();
|
|
142
146
|
}
|
|
143
147
|
}
|
|
@@ -175,4 +179,4 @@ AvatarComponent.propDecorators = {
|
|
|
175
179
|
showClass: [{ type: HostBinding, args: ["class.co-avatar",] }],
|
|
176
180
|
backgroundColor: [{ type: HostBinding, args: ["style.background-color",] }]
|
|
177
181
|
};
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsOENBQThDLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUdsSCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQW9CeEYsTUFBTSxPQUFPLGVBQWU7SUErRDFCLFlBQ1UsbUJBQXVDLEVBQ3ZDLDRCQUF5RCxFQUN6RCxxQkFBMkMsRUFDM0MsZ0JBQTRDLEVBQzVDLGVBQWtDO1FBSmxDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE2QjtRQUN6RCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBNEI7UUFDNUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBRTVDLENBQUM7SUFyRUQsSUFDVyxLQUFLLENBQUMsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcs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Szt1QkFjTCxLQUFLO3dCQWNMLFdBQVcsU0FBQyxpQkFBaUI7OEJBTzdCLFdBQVcsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZWxhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1yZXF1ZXN0JztcclxuaW1wb3J0IHtDb2xvclNlcXVlbmNlU2VydmljZSwgU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQnO1xyXG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblJlbGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1yZWxhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tYXZhdGFyXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1pbWFnZS1kaXNwbGF5IFttb2RlbF09XCJpbWFnZVNyY1wiICpuZ0lmPVwiaW1hZ2VTcmM7IGVsc2Ugc2hvd0luaXRpYWxzXCI+PC9jby1pbWFnZS1kaXNwbGF5PlxyXG4gICAgPG5nLXRlbXBsYXRlICNzaG93SW5pdGlhbHM+XHJcbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAzMCAzMFwiPlxyXG4gICAgICAgIDx0ZXh0IHg9XCI1MCVcIiB5PVwiNTAlXCIgZG9taW5hbnQtYmFzZWxpbmU9XCJjZW50cmFsXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIj57eyBpbml0aWFscyB9fTwvdGV4dD5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF2YXRhckNvbXBvbmVudClcclxuICB9XHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbWFnZSh2YWx1ZTogQ29Eb2N1bWVudCkge1xyXG4gICAgdGhpcy5faW1hZ2UgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3NldEltYWdlRm9yQXZhdGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGltYWdlKCk6IENvRG9jdW1lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHJlbGF0aW9uSWQodmFsdWU6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb25JZCAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5faW1hZ2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX3JlbGF0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLl9yZWxhdGlvbklkID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuX3NldEltYWdlRm9yQXZhdGFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlbGF0aW9uSWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbklkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHJlbGF0aW9uKHZhbHVlOiBSZWxhdGlvbkxpc3RPYmplY3QpIHtcclxuICAgIGlmICh0aGlzLl9yZWxhdGlvbiAmJiB2YWx1ZSAmJiB0aGlzLl9yZWxhdGlvbi5yZWxhdGlvbklkICE9PSB2YWx1ZS5yZWxhdGlvbklkKSB7XHJcbiAgICAgIHRoaXMuX2ltYWdlID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLl9yZWxhdGlvbklkID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLl9yZWxhdGlvbiA9IHZhbHVlO1xyXG4gICAgICB0aGlzLl9zZXRJbWFnZUZvckF2YXRhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkxpc3RPYmplY3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tYXZhdGFyXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGltYWdlU3JjOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcInN0eWxlLmJhY2tncm91bmQtY29sb3JcIilcclxuICBwdWJsaWMgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBzZXQgaW5pdGlhbHModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5faW5pdGlhbHMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3NldEJhY2tncm91bmRDb2xvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpbml0aWFscygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdGlhbHM6IHN0cmluZztcclxuICBwcml2YXRlIF9yZWxhdGlvbklkOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfcmVsYXRpb246IFJlbGF0aW9uTGlzdE9iamVjdDtcclxuICBwcml2YXRlIF9pbWFnZTogQ29Eb2N1bWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZTogVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29sb3JTZXF1ZW5jZVNlcnZpY2U6IENvbG9yU2VxdWVuY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVsYXRpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblJlbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyB0aGlzLl9zZXRJbWFnZUZvckF2YXRhcigpO1xyXG4gICAgdGhpcy5fc2V0QXZhdGFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9zZXRBdmF0YXIoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pbWFnZSAmJiB0aGlzLmltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgaWYgKCFhd2FpdCB0aGlzLl9nZXRJbWFnZUNvbnRlbnQodGhpcy5pbWFnZS5kb2N1bWVudElkKSkge1xyXG4gICAgICAgIHRoaXMuX3NldFJlbGF0aW9uSW5pdGlhbHMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2V0UmVsYXRpb25Jbml0aWFscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2V0SW1hZ2VGb3JBdmF0YXIoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pbWFnZSAmJiB0aGlzLmltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgaWYgKCFhd2FpdCB0aGlzLl9nZXRJbWFnZUNvbnRlbnQodGhpcy5pbWFnZS5kb2N1bWVudElkKSkge1xyXG4gICAgICAgIHRoaXMuX3NldEltYWdlRnJvbVJlbGF0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NldEltYWdlRnJvbVJlbGF0aW9uKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9zZXRJbWFnZUZyb21SZWxhdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnJlbGF0aW9uKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlbGF0aW9uLmF2YXRhckltYWdlICYmIHRoaXMucmVsYXRpb24uYXZhdGFySW1hZ2UuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgIHRoaXMuX2ltYWdlID0gdGhpcy5yZWxhdGlvbi5hdmF0YXJJbWFnZTtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuX2dldEltYWdlQ29udGVudCh0aGlzLmltYWdlLmRvY3VtZW50SWQpKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXRSZWxhdGlvbkluaXRpYWxzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3NldFJlbGF0aW9uSW5pdGlhbHMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc3QgcmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0gbmV3IFJlbGF0aW9uUmVxdWVzdCgpO1xyXG4gICAgICByZXF1ZXN0LnJlbGF0aW9uSWQgPSB0aGlzLl9yZWxhdGlvbklkO1xyXG4gICAgICB0aGlzLl9yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZXF1ZXN0KS50aGVuKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLl9yZWxhdGlvbiA9IGRhdGFbMF07XHJcbiAgICAgICAgICBpZiAodGhpcy5yZWxhdGlvbi5hdmF0YXJJbWFnZSAmJiB0aGlzLnJlbGF0aW9uLmF2YXRhckltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW1hZ2UgPSB0aGlzLnJlbGF0aW9uLmF2YXRhckltYWdlO1xyXG4gICAgICAgICAgICBpZiAoIWF3YWl0IHRoaXMuX2dldEltYWdlQ29udGVudCh0aGlzLmltYWdlLmRvY3VtZW50SWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fc2V0UmVsYXRpb25Jbml0aWFscygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRSZWxhdGlvbkluaXRpYWxzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFJlbGF0aW9uSW5pdGlhbHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWxhdGlvbikge1xyXG4gICAgICB0aGlzLmluaXRpYWxzID0gdGhpcy5yZWxhdGlvbi5kaXNwbGF5SW5pdGlhbHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRJbWFnZUNvbnRlbnQoZG9jSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgY29udGVudDogc3RyaW5nID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudChkb2NJZCk7XHJcbiAgICBpZiAoY29udGVudCAmJiB0aGlzLl9pbWFnZSkge1xyXG4gICAgICB0aGlzLl9pbWFnZS50aHVtYm5haWxCb2R5ID0gY29udGVudDtcclxuICAgICAgdGhpcy5pbWFnZVNyYyA9IHRoaXMuaW1hZ2UudGh1bWJuYWlsQm9keUFzRGF0YVVyaTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEJhY2tncm91bmRDb2xvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1hZ2VTcmMgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9jb2xvclNlcXVlbmNlU2VydmljZS5nZXRSYW5kb21Db2xvcih0aGlzLnJlbGF0aW9uLnJlbGF0aW9uSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsOENBQThDLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUdsSCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQW9CeEYsTUFBTSxPQUFPLGVBQWU7SUErRDFCLFlBQ1UsbUJBQXVDLEVBQ3ZDLDRCQUF5RCxFQUN6RCxxQkFBMkMsRUFDM0MsZ0JBQTRDLEVBQzVDLGVBQWtDO1FBSmxDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE2QjtRQUN6RCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBNEI7UUFDNUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBRTVDLENBQUM7SUFyRUQsSUFDVyxLQUFLLENBQUMsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcs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bEIsMkJBQTJCO1lBSjNCLG9CQUFvQjtZQUdwQiwwQkFBMEI7WUFiaEMsaUJBQWlCOzs7b0JBbUNoQixLQUFLO3lCQVVMLEtBQUs7dUJBY0wsS0FBSzt3QkFjTCxXQUFXLFNBQUMsaUJBQWlCOzhCQU83QixXQUFXLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdCc7XHJcbmltcG9ydCB7Q29sb3JTZXF1ZW5jZVNlcnZpY2UsIFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50JztcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25SZWxhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tcmVsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWF2YXRhclwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y28taW1hZ2UtZGlzcGxheSBbbW9kZWxdPVwiaW1hZ2VTcmNcIiAqbmdJZj1cImltYWdlU3JjOyBlbHNlIHNob3dJbml0aWFsc1wiPjwvY28taW1hZ2UtZGlzcGxheT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0luaXRpYWxzPlxyXG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMzAgMzBcIj5cclxuICAgICAgICA8dGV4dCB4PVwiNTAlXCIgeT1cIjUwJVwiIGRvbWluYW50LWJhc2VsaW5lPVwiY2VudHJhbFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+e3sgaW5pdGlhbHMgfX08L3RleHQ+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdmF0YXJDb21wb25lbnQpXHJcbiAgfVxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW1hZ2UodmFsdWU6IENvRG9jdW1lbnQpIHtcclxuICAgIHRoaXMuX2ltYWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLl9zZXRJbWFnZUZvckF2YXRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpbWFnZSgpOiBDb0RvY3VtZW50IHtcclxuICAgIHJldHVybiB0aGlzLl9pbWFnZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCByZWxhdGlvbklkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnJlbGF0aW9uSWQgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2ltYWdlID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLl9yZWxhdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5fcmVsYXRpb25JZCA9IHZhbHVlO1xyXG4gICAgICB0aGlzLl9zZXRJbWFnZUZvckF2YXRhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZWxhdGlvbklkKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb25JZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCByZWxhdGlvbih2YWx1ZTogUmVsYXRpb25MaXN0T2JqZWN0KSB7XHJcbiAgICBpZiAodGhpcy5fcmVsYXRpb24gJiYgdmFsdWUgJiYgdGhpcy5fcmVsYXRpb24ucmVsYXRpb25JZCAhPT0gdmFsdWUucmVsYXRpb25JZCkge1xyXG4gICAgICB0aGlzLl9pbWFnZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5fcmVsYXRpb25JZCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5fcmVsYXRpb24gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5fc2V0SW1hZ2VGb3JBdmF0YXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVsYXRpb24oKTogUmVsYXRpb25MaXN0T2JqZWN0IHtcclxuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWF2YXRhclwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbWFnZVNyYzogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXCIpXHJcbiAgcHVibGljIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgc2V0IGluaXRpYWxzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2luaXRpYWxzID0gdmFsdWU7XHJcbiAgICB0aGlzLl9zZXRCYWNrZ3JvdW5kQ29sb3IoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5pdGlhbHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9pbml0aWFscztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRpYWxzOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcmVsYXRpb25JZDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX3JlbGF0aW9uOiBSZWxhdGlvbkxpc3RPYmplY3Q7XHJcbiAgcHJpdmF0ZSBfaW1hZ2U6IENvRG9jdW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2U6IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbG9yU2VxdWVuY2VTZXJ2aWNlOiBDb2xvclNlcXVlbmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbGF0aW9uU2VydmljZTogVHJhbnNhY3Rpb25SZWxhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gdGhpcy5fc2V0SW1hZ2VGb3JBdmF0YXIoKTtcclxuICAgIHRoaXMuX3NldEF2YXRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2V0QXZhdGFyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS5kb2N1bWVudElkKSB7XHJcbiAgICAgIGlmICghYXdhaXQgdGhpcy5fZ2V0SW1hZ2VDb250ZW50KHRoaXMuaW1hZ2UuZG9jdW1lbnRJZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRSZWxhdGlvbkluaXRpYWxzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NldFJlbGF0aW9uSW5pdGlhbHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3NldEltYWdlRm9yQXZhdGFyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS5kb2N1bWVudElkKSB7XHJcbiAgICAgIGlmICghYXdhaXQgdGhpcy5fZ2V0SW1hZ2VDb250ZW50KHRoaXMuaW1hZ2UuZG9jdW1lbnRJZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRJbWFnZUZyb21SZWxhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZXRJbWFnZUZyb21SZWxhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2V0SW1hZ2VGcm9tUmVsYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5yZWxhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5yZWxhdGlvbi5hdmF0YXJJbWFnZSAmJiB0aGlzLnJlbGF0aW9uLmF2YXRhckltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgICB0aGlzLl9pbWFnZSA9IHRoaXMucmVsYXRpb24uYXZhdGFySW1hZ2U7XHJcbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLl9nZXRJbWFnZUNvbnRlbnQodGhpcy5pbWFnZS5kb2N1bWVudElkKSkge1xyXG4gICAgICAgICAgdGhpcy5fc2V0UmVsYXRpb25Jbml0aWFscygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9zZXRSZWxhdGlvbkluaXRpYWxzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IFJlbGF0aW9uUmVxdWVzdCA9IG5ldyBSZWxhdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5yZWxhdGlvbklkID0gdGhpcy5fcmVsYXRpb25JZDtcclxuICAgICAgdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVxdWVzdCkudGhlbihhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5fcmVsYXRpb24gPSBkYXRhWzBdO1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVsYXRpb24uYXZhdGFySW1hZ2UgJiYgdGhpcy5yZWxhdGlvbi5hdmF0YXJJbWFnZS5kb2N1bWVudElkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ltYWdlID0gdGhpcy5yZWxhdGlvbi5hdmF0YXJJbWFnZTtcclxuICAgICAgICAgICAgaWYgKCFhd2FpdCB0aGlzLl9nZXRJbWFnZUNvbnRlbnQodGhpcy5pbWFnZS5kb2N1bWVudElkKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NldFJlbGF0aW9uSW5pdGlhbHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0UmVsYXRpb25Jbml0aWFscygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRSZWxhdGlvbkluaXRpYWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5pbml0aWFscyA9IHRoaXMucmVsYXRpb24uZGlzcGxheUluaXRpYWxzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0SW1hZ2VDb250ZW50KGRvY0lkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IGNvbnRlbnQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZS5nZXREb2N1bWVudENvbnRlbnQoZG9jSWQpO1xyXG4gICAgaWYgKGNvbnRlbnQgJiYgdGhpcy5faW1hZ2UpIHtcclxuICAgICAgdGhpcy5faW1hZ2UudGh1bWJuYWlsQm9keSA9IGNvbnRlbnQ7XHJcbiAgICAgIHRoaXMuaW1hZ2VTcmMgPSB0aGlzLmltYWdlLnRodW1ibmFpbEJvZHlBc0RhdGFVcmk7XHJcbiAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRCYWNrZ3JvdW5kQ29sb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmltYWdlU3JjID0gXCJcIjtcclxuICAgIGlmICh0aGlzLnJlbGF0aW9uKSB7XHJcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gdGhpcy5fY29sb3JTZXF1ZW5jZVNlcnZpY2UuZ2V0UmFuZG9tQ29sb3IodGhpcy5yZWxhdGlvbi5yZWxhdGlvbklkKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -197,9 +197,10 @@ export class DeliveryPlanningOverviewComponent {
|
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
199
|
planOrderLines(order, transportDay, week) {
|
|
200
|
+
var _a;
|
|
200
201
|
return __awaiter(this, void 0, void 0, function* () {
|
|
201
202
|
let oldWeek = week;
|
|
202
|
-
if (order.lines.length) {
|
|
203
|
+
if (((_a = order.lines) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
203
204
|
order.linesLoaded = true;
|
|
204
205
|
order.tasks = [];
|
|
205
206
|
order.tasksLoaded = true;
|
|
@@ -249,37 +250,39 @@ export class DeliveryPlanningOverviewComponent {
|
|
|
249
250
|
let planOrder = yield this._transactionCon.getPlanOrder(this._transaction.currentTransaction.transactionInfo.id);
|
|
250
251
|
yield this.getSequenceOrderValue(planOrder);
|
|
251
252
|
yield this.getOrderLinesPlanned(planOrder);
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
253
|
+
if (planOrder.partDelivery) {
|
|
254
|
+
let selectedLines = this._transaction.currentTransaction.transactionLines.filter((transLines) => transLines.selected);
|
|
255
|
+
//Does the order already exist?
|
|
256
|
+
if ((_a = transportDay === null || transportDay === void 0 ? void 0 : transportDay.plannedOrders) === null || _a === void 0 ? void 0 : _a.find(order => order.transId === planOrder.transId)) {
|
|
257
|
+
//Yes the order exists
|
|
258
|
+
//If the line(s) we're trying to plan already are planned we need to validate if we need to plan anyway
|
|
259
|
+
let cantPlanSelectedLines = [];
|
|
260
|
+
if (selectedLines.length > 0) {
|
|
261
|
+
transportDay.plannedOrders.find((plannedOrder) => plannedOrder.transId === planOrder.transId).lines.forEach((plannedLine) => {
|
|
262
|
+
if (selectedLines.find((selectedLine) => selectedLine.lineNr === plannedLine.originalLineNr)) {
|
|
263
|
+
cantPlanSelectedLines.push(plannedLine);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
if (cantPlanSelectedLines.length === planOrder.lines.length) {
|
|
267
|
+
yield this._dialog.showError("NO_LINES_TO_PLAN", true);
|
|
268
|
+
return;
|
|
262
269
|
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
yield this._dialog.showError("
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
yield this._dialog.showError("NO_LINES_SELECTED", true);
|
|
266
273
|
return;
|
|
267
274
|
}
|
|
275
|
+
let plannedOrder = transportDay.plannedOrders.find((plannedOrder) => plannedOrder.transId === planOrder.transId);
|
|
276
|
+
//All lines that need to be planned for an order are in planOrder now
|
|
277
|
+
//Which means that we just filter the lines out that DON'T match a selected line AND are planned
|
|
278
|
+
planOrder.lines.filter((toPlanLine) => !plannedOrder.lines.find((plannedOrderLine) => plannedOrderLine.originalLineNr === toPlanLine.originalLineNr)
|
|
279
|
+
&& !selectedLines.find((selectedLine) => selectedLine.lineNr === toPlanLine.originalLineNr));
|
|
268
280
|
}
|
|
269
281
|
else {
|
|
270
|
-
|
|
271
|
-
|
|
282
|
+
//Order does not exist, lets prepare it with the selected lines
|
|
283
|
+
//Filter the lines for only the selected ones
|
|
284
|
+
planOrder.lines = planOrder.lines.filter(plannedOrderLine => selectedLines.find((selectedLine) => plannedOrderLine.originalLineNr === selectedLine.lineNr));
|
|
272
285
|
}
|
|
273
|
-
let plannedOrder = transportDay.plannedOrders.find((plannedOrder) => plannedOrder.transId === planOrder.transId);
|
|
274
|
-
//All lines that need to be planned for an order are in planOrder now
|
|
275
|
-
//Which means that we just filter the lines out that DON'T match a selected line AND are planned
|
|
276
|
-
planOrder.lines.filter((toPlanLine) => !plannedOrder.lines.find((plannedOrderLine) => plannedOrderLine.originalLineNr === toPlanLine.originalLineNr)
|
|
277
|
-
&& !selectedLines.find((selectedLine) => selectedLine.lineNr === toPlanLine.originalLineNr));
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
//Order does not exist, lets prepare it with the selected lines
|
|
281
|
-
//Filter the lines for only the selected ones
|
|
282
|
-
planOrder.lines = planOrder.lines.filter(plannedOrderLine => selectedLines.find((selectedLine) => plannedOrderLine.originalLineNr === selectedLine.lineNr));
|
|
283
286
|
}
|
|
284
287
|
//Send the prepared order to the
|
|
285
288
|
this.openPlanningPopup(planOrder, transportDay, week);
|
|
@@ -512,4 +515,4 @@ DeliveryPlanningOverviewComponent.propDecorators = {
|
|
|
512
515
|
showClass: [{ type: HostBinding, args: ["class.co-delivery-planning-overview",] }],
|
|
513
516
|
onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
|
|
514
517
|
};
|
|
515
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUc5RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFJN0csT0FBTyxFQUNMLHFDQUFxQyxFQUN0QyxNQUFNLHVGQUF1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QTtnQkFDM0MsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQzFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3ZEO1FBQ0gsQ0FBQztLQUFBO0lBR00sc0JBQXNCLENBQUMsU0FBb0IsRUFBRSxZQUFzQyxFQUFFLElBQWdDO1FBQzFILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7OztZQWppQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBMUVPLHVCQUF1QjtZQUN2QixrQkFBa0I7WUFDbEIsMkJBQTJCO1lBSzNCLGFBQWE7WUF2Qm5CLGlCQUFpQjtZQXFDWCxpQkFBaUI7WUFOakIsZ0JBQWdCOzs7b0JBb0VyQixZQUFZLFNBQUMscUNBQXFDOzJCQUtsRCxTQUFTLFNBQUMsY0FBYzt5QkFHeEIsU0FBUyxTQUFDLFlBQVk7cUNBR3RCLFNBQVMsU0FBQyxlQUFlOzBCQUt6QixLQUFLOzhCQUdMLEtBQUs7c0NBR0wsS0FBSzsyQ0FHTCxNQUFNOzBDQVdOLE1BQU07d0JBNkNOLFdBQVcsU0FBQyxxQ0FBcUM7dUJBT2pELFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXN9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLWNhbGVuZGFyLW1vZGVzLmVudW1cIjtcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzfSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy12aWV3LW1vZGVzLmVudW1cIjtcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvXCI7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcclxuaW1wb3J0IHtHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm9cIjtcclxuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnRcclxufSBmcm9tIFwiLi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXAvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlL2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdGlsZS1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnN9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXVwZGF0ZS1hY3Rpb25zLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm9cIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cCAjcGxhbm5pbmdQb3B1cCAqbmdJZj1cInNob3dOb3RlRGlhbG9nXCIgKGNsb3NlRXZlbnQpPVwic2hvd05vdGVEaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU3VjY2VlZGVkUGxhbkFjdGlvbik9XCJoYW5kbGVQb3B1cFBsYW5FdmVudCgkZXZlbnQpXCI+PC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cD5cclxuICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwICpuZ0lmPVwic2hvd1NldHRpbmdzRGlhbG9nXCIgW3RyYW5zcG9ydERheV09XCJzZWxlY3RlZFRyYW5zcG9ydERheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXZhaWxhYmlsaXR5Q2hlY2tlZCk9XCJoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2F2ZUFjdGlvbik9XCJoYW5kbGVTZXR0aW5nc1NhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VFdmVudCk9XCJzaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZVwiPjwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cD5cclxuICAgIDxkaXYgY2xhc3M9XCJkZWxpdmVyeS1vdmVydmlldy13cmFwcGVyXCIgW2NsYXNzLnNpZGViYXJdPVwiY3VycmVudFZpZXdNb2RlID09PSAnREFZU19BUk9VTkQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aWxlLXZpZXctbW9kZXMgcm93XCI+XHJcbiAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5Ob3JtYWxcIiBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUaWxlTW9kZSA9PT0gdGlsZU1vZGVzLk5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYWxlbmRhckxpbmVzUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5DYWxlbmRhclwiIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFRpbGVNb2RlID09PSB0aWxlTW9kZXMuQ2FsZW5kYXJcIlxyXG4gICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJEYXlSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1jb21wb25lbnQtd3JhcHBlclwiPlxyXG4gICAgICAgIDxjby1kYXRlLXBsYW5uaW5nIFt2aWV3XT1cImN1cnJlbnRWaWV3TW9kZVwiIFtzZWxlY3RlZERhdGVdPVwiY3VycmVudERhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCI+PC9jby1kYXRlLXBsYW5uaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZGF0ZS1wbGFubmluZ1wiICNyb3dDb250YWluZXIgKm5nRm9yPVwibGV0IHRyYW5zcG9ydFdlZWtSb3cgb2YgcGxhblRyYW5zcG9ydFdlZWtBcnJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgI2NvbHVtbkVsZW1cclxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0cmFuc1BvcnREYXkgb2YgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZVxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXRyYW5zUG9ydERheS5hdmFpbGFibGVPbkRhdGUgfHwgdHJhbnNQb3J0RGF5Lm1heE1pbnV0ZXMgPT09IDAgfHwgY2hlY2tBdmFpbGFibGUodHJhbnNQb3J0RGF5KVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdHJhbnNQb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZSB8fCB0cmFuc1BvcnREYXkubWF4TWludXRlcyA9PT0gMFwiXHJcbiAgICAgICAgICAgIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50LCB0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgKGRyb3ApPVwiZHJvcHBlZCgkZXZlbnQsIHRyYW5zcG9ydFdlZWtSb3csIHRyYW5zUG9ydERheSwgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpKVwiXHJcbiAgICAgICAgICAgIChkcmFnZW5kKT1cImRyYWdFbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFt0cmFuc3BvcnREYXldPVwidHJhbnNQb3J0RGF5XCJcclxuICAgICAgICAgICAgKGRlbGV0ZU9yZGVyRXZlbnQpPVwiaGFuZGxlRGVsZXRlT3JkZXIoJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgICh0aW1lQ2hhbmdlRXZlbnQpPVwiaGFuZGxlVGltZUNoYW5nZUV2ZW50KHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdywkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9wZW5TZXR0aW5nc0RpYWxvZ0V2ZW50KT1cIm9wZW5TZXR0aW5nc0RpYWxvZygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGNhbGVuZGFyUGxhbkV2ZW50KT1cImhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KCRldmVudCwgdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgIChkZWxldGVPcmRlckxpbmVFdmVudCk9XCJoYW5kbGVEZWxldGVMaW5lKCRldmVudCwgdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgIChlZGl0T3JkZXJFdmVudCk9XCJoYW5kbGVFZGl0UGxhbm5lZE9yZGVyKCRldmVudCwgdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgIChtb3ZlRXZlbnQpPVwiaGFuZGxlTW92ZUV2ZW50KCRldmVudCx0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3csIHBsYW5UcmFuc3BvcnRXZWVrQXJyKVwiXHJcblxyXG5cclxuICAgICAgICAgID48L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYW5uaW5nQWN0aW9uczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zID0gRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbGVNb2RlczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXM7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHk6IHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlQ29tcG9uZW50KVxyXG4gIHB1YmxpYyBzZXQgdGlsZXModGlsZXM6IFF1ZXJ5TGlzdDxEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlQ29tcG9uZW50Pikge1xyXG4gICAgdGhpcy50aWxlc1F1ZXJ5TGlzdCA9IHRpbGVzO1xyXG4gIH07XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Jvd0NvbnRhaW5lcicpIHJvd0NvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdjb2x1bW5FbGVtJykgY29sdW1uRWxlbTogSFRNTERpdkVsZW1lbnQ7XHJcbiAgcHVibGljIGNvbHVtbk51bSA9IDM7IC8vaW5pdGlhbCBjb3VudFxyXG5cclxuICBAVmlld0NoaWxkKCdwbGFubmluZ1BvcHVwJylcclxuICBwdWJsaWMgc2V0IHBsYW5uaW5nUG9wdXBDb21wb25lbnQodmFsdWU6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYgPSB2YWx1ZTtcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50TW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50Vmlld01vZGU6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nVmlld01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMgPSB0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXNldFBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHRpbGVTaXplID0gMzAwOyAvL29uZSB0aWxlIHNob3VsZCBoYXZlIHRoaXMgd2lkdGhcclxuICBwdWJsaWMgcGxhbm5pbmdQb3B1cFJlZjogRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd05vdGVEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1NldHRpbmdzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHRpbGVzUXVlcnlMaXN0OiBRdWVyeUxpc3Q8RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudD47XHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0IHBsYW5UcmFuc3BvcnRXZWVrQXJyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnBsYW5UcmFuc3BvcnRXZWVrQXJyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50VGlsZU1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRpbGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBjdXJyZW50VGlsZU1vZGUodGlsZU1vZGU6IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMpIHtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGN1cnJlbnREYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRTdGFydERhdGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U6IERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25Db246IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIF9kaWFsb2c6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy9jYWxjdWxhdGluZyB1cG9uIGxvYWRpbmdcclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnNldENvbE51bSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXdcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9yZWNhbGN1bGF0aW5nIHVwb24gYnJvd3NlciB3aW5kb3cgcmVzaXplXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuc2V0Q29sTnVtKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFzeW5jIGRyb3BwZWQoZXY6IERyYWdFdmVudCwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB0cmFuc3BvcnREYXlzOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICBjb25zdCBkYXRhID0gZXYuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJ0ZXh0XCIpO1xyXG4gICAgbGV0IGluZGV4ID0gdHJhbnNwb3J0RGF5cy5pbmRleE9mKHRyYW5zcG9ydERheSlcclxuICAgIGxldCB0aWxlID0gdGhpcy50aWxlc1F1ZXJ5TGlzdC5nZXQoaW5kZXgpO1xyXG4gICAgaWYgKCF0aWxlLmV4cGFuZGVkKSB7XHJcbiAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgIT0gXCJsaW5lc1wiICYmICF0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5tb3ZpbmdUcmFuc0lkKSB7XHJcbiAgICAgIGlmIChkYXRhICYmIHBhcnNlSW50KGRhdGEpKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0VHJhbnNhY3Rpb25CeUlkKHBhcnNlSW50KGRhdGEpKTtcclxuICAgICAgICBjb25zdCBvcmRlcjogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgPSB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb247XHJcbiAgICAgICAgaWYgKG9yZGVyLnRyYW5zYWN0aW9uSW5mbz8uaGVhZGVySW5mb1N0YXR1cz8ucXVhbnRpdHlQbGFubmluZ0ZpbmFsID09PSAwKSB7XHJcbiAgICAgICAgICBjb25zdCBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIocGFyc2VJbnQoZGF0YSkpXHJcbiAgICAgICAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyLCB0cmFuc3BvcnREYXksIHdlZWspO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiT1JERVJfSEFTX0FMUkVBRFlfQkVFTl9QTEFOTkVEXCIpLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZGF0YSAhPSBcImxpbmVzXCIgJiYgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubW92aW5nVHJhbnNJZCkge1xyXG4gICAgICAvLyBhd2FpdCB0aGlzLmhhbmRsZU1vdmVOb3JtYWxFdmVudChkYXRhLCB0cmFuc3BvcnREYXksIHdlZWssIHRoaXMucGxhblRyYW5zcG9ydFdlZWtBcnIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5wbGFuU2VsZWN0ZWRMaW5lcyh0cmFuc3BvcnREYXksIHdlZWspXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbGxvd0Ryb3AoZXY6IERyYWdFdmVudCwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgJiYgdHJhbnNwb3J0RGF5Lm1heE1pbnV0ZXMgPiAwICYmIHRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUpIHtcclxuICAgICAgcmV0dXJuIHRyYW5zcG9ydERheS5taW51dGVzICsgdHJhbnNwb3J0RGF5Lm1pbnV0ZXMgPCB0cmFuc3BvcnREYXkubWF4TWludXRlcyAmJiB0cmFuc3BvcnREYXkubWF4T3JkZXJBbW91bnQgPCB0cmFuc3BvcnREYXkub3JkZXJBbW91bnQgJiYgdHJhbnNwb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc2V0Q29sTnVtKCkge1xyXG4gICAgaWYgKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnZpZXdNb2RlID09PSBEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzLlNpZGViYXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5OdW0gPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2x1bW5OdW0gPSAzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBkcmFnRW5kKGV2OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcldlZWtBcnJheSh3ZWVrQXJyYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICByZXR1cm4gd2Vla0FycmF5LnNsaWNlKDAsIHRoaXMuY29sdW1uTnVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VDaGFuZ2UobmV3RGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZSA9IG5ld0RhdGU7XHJcbiAgICB0aGlzLnJlc2V0UGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlT3JkZXIoZGVsZXRlUmVzdWx0OiBbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10gPSBwbGFubmluZ1RyYW5zcG9ydFdlZWs7XHJcbiAgICBsZXQgb3JkZXIgPSBkZWxldGVSZXN1bHRbMF07XHJcbiAgICBpZiAob3JkZXIpIHtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnMoZGVsZXRlUmVzdWx0WzFdKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChvcmRlcik7XHJcbiAgICAgIGlmIChkZWxldGVSZXN1bHRbMF0ubGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRlbGV0aW5nT3JkZXIgPSBvcmRlcjtcclxuICAgICAgICBkZWxldGVSZXN1bHRbMV0ucGxhbm5lZE9yZGVycy5zcGxpY2UoZGVsZXRlUmVzdWx0WzFdLnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KHtcclxuICAgICAgICAgIG9sZFdlZWs6IG9sZFdlZWssXHJcbiAgICAgICAgICB3ZWVrOiBwbGFubmluZ1RyYW5zcG9ydFdlZWssXHJcbiAgICAgICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRPcmRlclxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoXCJOT19MSU5FU19UT19ERUxFVEVcIiwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVMaW5lKGRlbGV0ZVJlc3VsdDoge1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9LCB3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydFdlZWtSb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlayA9IHRyYW5zcG9ydFdlZWtSb3c7XHJcbiAgICBsZXQgb3JkZXIgPSB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBkZWxldGVSZXN1bHQub3JkZXIudHJhbnNJZCk7XHJcbiAgICBvcmRlci5saW5lcyA9IG9yZGVyLmxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUub3JpZ2luYWxMaW5lTnIgIT09IGRlbGV0ZVJlc3VsdC5saW5lLm9yaWdpbmFsTGluZU5yKTtcclxuICAgIGlmIChvcmRlci5saW5lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICB3ZWVrOiB0cmFuc3BvcnRXZWVrUm93LFxyXG4gICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRMaW5lc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gb3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIGlmICghb3JkZXIubGluZXMpIHtcclxuICAgICAgb3JkZXIubGluZXMgPSBbXTtcclxuICAgIH1cclxuICAgIG9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc3BvcnRPcmRlcnMoIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmVxdWVzdDogR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCA9IG5ldyBHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIHJlcXVlc3QuZGF0ZSA9IHRyYW5zcG9ydERheS5kYXRlO1xyXG4gICAgcmVxdWVzdC50cmFuc3BvcnRJZCA9IHRyYW5zcG9ydERheS50cmFuc3BvcnQudHJhbnNwb3J0SWQ7XHJcbiAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycyA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFRyYW5zcG9ydE9yZGVycyhyZXF1ZXN0KTtcclxuICAgIHRyYW5zcG9ydERheS5vcmRlcnNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwbGFuT3JkZXJMaW5lcyhvcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IHdlZWs7XHJcbiAgICBpZiAob3JkZXIubGluZXMubGVuZ3RoKSB7XHJcbiAgICAgIG9yZGVyLmxpbmVzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgb3JkZXIudGFza3MgPSBbXTtcclxuICAgICAgb3JkZXIudGFza3NMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBvcmRlci5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCF0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycykge1xyXG4gICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzID0gW29yZGVyXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgcGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIgPSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKCAocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKTtcclxuICAgICAgICAgIGlmIChvcmRlci5zdGFydFRpbWUgIT09IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCkuc3RhcnRUaW1lKSB7XHJcblxyXG4gICAgICAgICAgICBpZighb3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgb3JkZXIuc3RhcnRUaW1lID0gcGxhbm5lZE9yZGVyLnN0YXJ0VGltZTtcclxuICAgICAgICAgICAgICBvcmRlci5lbmRUaW1lID0gcGxhbm5lZE9yZGVyLmVuZFRpbWU7XHJcbiAgICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmluZGV4T2YocGxhbm5lZE9yZGVyKSk7XHJcbiAgICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMucHVzaChvcmRlcik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMucHVzaChvcmRlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnNwbGljZSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCkpLCAxKTtcclxuICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMucHVzaChvcmRlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KHtcclxuICAgICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICAgIHdlZWs6IHdlZWssXHJcbiAgICAgICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9ucy5QbGFuTGluZXNcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKFwiTk9fTElORVNfVE9fUExBTlwiLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwbGFuU2VsZWN0ZWRMaW5lcyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICBsZXQgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuXHJcbiAgICBsZXQgc2VsZWN0ZWRMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKCh0cmFuc0xpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiB0cmFuc0xpbmVzLnNlbGVjdGVkKTtcclxuXHJcblxyXG4gICAgLy9Eb2VzIHRoZSBvcmRlciBhbHJlYWR5IGV4aXN0P1xyXG4gICAgaWYgKHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8uZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgLy9ZZXMgdGhlIG9yZGVyIGV4aXN0c1xyXG5cclxuICAgICAgLy9JZiB0aGUgbGluZShzKSB3ZSdyZSB0cnlpbmcgdG8gcGxhbiBhbHJlYWR5IGFyZSBwbGFubmVkIHdlIG5lZWQgdG8gdmFsaWRhdGUgaWYgd2UgbmVlZCB0byBwbGFuIGFueXdheVxyXG4gICAgICBsZXQgY2FudFBsYW5TZWxlY3RlZExpbmVzOiBQbGFuT3JkZXJMaW5lW10gPSBbXTtcclxuICAgICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpLmxpbmVzLmZvckVhY2goKHBsYW5uZWRMaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHNlbGVjdGVkTGluZS5saW5lTnIgPT09IHBsYW5uZWRMaW5lLm9yaWdpbmFsTGluZU5yKSkge1xyXG4gICAgICAgICAgICBjYW50UGxhblNlbGVjdGVkTGluZXMucHVzaChwbGFubmVkTGluZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChjYW50UGxhblNlbGVjdGVkTGluZXMubGVuZ3RoID09PSBwbGFuT3JkZXIubGluZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKFwiTk9fTElORVNfVE9fUExBTlwiLCB0cnVlKTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKFwiTk9fTElORVNfU0VMRUNURURcIiwgdHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBwbGFubmVkT3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpO1xyXG5cclxuICAgICAgLy9BbGwgbGluZXMgdGhhdCBuZWVkIHRvIGJlIHBsYW5uZWQgZm9yIGFuIG9yZGVyIGFyZSBpbiBwbGFuT3JkZXIgbm93XHJcbiAgICAgIC8vV2hpY2ggbWVhbnMgdGhhdCB3ZSBqdXN0IGZpbHRlciB0aGUgbGluZXMgb3V0IHRoYXQgRE9OJ1QgbWF0Y2ggYSBzZWxlY3RlZCBsaW5lIEFORCBhcmUgcGxhbm5lZFxyXG4gICAgICBwbGFuT3JkZXIubGluZXMuZmlsdGVyKFxyXG4gICAgICAgICh0b1BsYW5MaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiAhcGxhbm5lZE9yZGVyLmxpbmVzLmZpbmQoKHBsYW5uZWRPcmRlckxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHBsYW5uZWRPcmRlckxpbmUub3JpZ2luYWxMaW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpXHJcbiAgICAgICAgICAmJiAhc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHNlbGVjdGVkTGluZS5saW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vT3JkZXIgZG9lcyBub3QgZXhpc3QsIGxldHMgcHJlcGFyZSBpdCB3aXRoIHRoZSBzZWxlY3RlZCBsaW5lc1xyXG4gICAgICAvL0ZpbHRlciB0aGUgbGluZXMgZm9yIG9ubHkgdGhlIHNlbGVjdGVkIG9uZXNcclxuICAgICAgcGxhbk9yZGVyLmxpbmVzID0gcGxhbk9yZGVyLmxpbmVzLmZpbHRlcihwbGFubmVkT3JkZXJMaW5lID0+IHNlbGVjdGVkTGluZXMuZmluZCgoc2VsZWN0ZWRMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiBwbGFubmVkT3JkZXJMaW5lLm9yaWdpbmFsTGluZU5yID09PSBzZWxlY3RlZExpbmUubGluZU5yKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9TZW5kIHRoZSBwcmVwYXJlZCBvcmRlciB0byB0aGVcclxuICAgIHRoaXMub3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyLCB0cmFuc3BvcnREYXksIHdlZWspO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTZXF1ZW5jZU9yZGVyVmFsdWUob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgb3JkZXIucGxhbm5lZExpbmVJZCA9IGF3YWl0IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmdldE9yZGVyU2VxdWVuY2VWYWx1ZSgpO1xyXG4gICAgb3JkZXIuY2hhaW5lZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVQb3B1cFBsYW5FdmVudChldmVudDogW1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXV0pIHtcclxuXHJcblxyXG4gICAgdGhpcy5zaG93Tm90ZURpYWxvZyA9IGZhbHNlO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnMoZXZlbnRbMV0pO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUoZXZlbnRbMF0pXHJcbiAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKGV2ZW50WzBdKVxyXG4gICAgYXdhaXQgdGhpcy5wbGFuT3JkZXJMaW5lcyhldmVudFswXSwgZXZlbnRbMV0sIGV2ZW50WzJdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZXR0aW5nc1NhdmUoY2hhbmdlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgLy8gdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2V0dGluZ3NEaWFsb2codHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUcmFuc3BvcnREYXkgPSB0cmFuc3BvcnREYXk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRyYW5zcG9ydERheSkge1xyXG4gICAgICB0aGlzLnNob3dTZXR0aW5nc0RpYWxvZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoZGF0YToge1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0sIHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlcjtcclxuICAgIGlmIChkYXRhLmRhdGEgPT09IFwiZmFsc2VcIiAmJiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCkge1xyXG4gICAgICBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U/LmN1cnJlbnRUcmFuc0lkKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KGRhdGEuZGF0YSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwbGFuT3JkZXIgJiYgZGF0YS5jdXJyZW50SG91cikge1xyXG5cclxuXHJcbiAgICAgIHBsYW5PcmRlci5zdGFydFRpbWUgPSB0aGlzLmNhbGN1bGF0ZVN0YXJ0VGltZSh0cmFuc3BvcnRXZWVrRGF5LCBkYXRhLmN1cnJlbnRIb3VyKTtcclxuICAgICAgcGxhbk9yZGVyLmVuZFRpbWUgPSB0aGlzLmNhbGN1bGF0ZUVuZFRpbWUocGxhbk9yZGVyLnN0YXJ0VGltZSwgZGF0YS5jdXJyZW50SG91ciwgcGxhbk9yZGVyKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKHRyYW5zcG9ydFdlZWtEYXkpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKVxyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0V2Vla0RheSwgd2Vlayk7XHJcbiAgICAgIGlmIChkYXRhLmRhdGEgPT09IFwiZmFsc2VcIiAmJiB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRUcmFuc2FjdGlvbkJ5SWQodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRyYW5zSWQpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLnNhdmVUcmFuc2FjdGlvbigpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmNoZWNrUmVmVHJhbnNhY3Rpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZVN0YXJ0VGltZSh0cmFuc3BvcnRXZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGN1cnJlbnRIb3VyOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGxldCBzdGFydERhdGU6IERhdGUgPSBuZXcgRGF0ZSh0cmFuc3BvcnRXZWVrRGF5LmRhdGUpO1xyXG4gICAgbGV0IHN0YXJ0VGltZTogbnVtYmVyID0gcGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoXCI6XCIpWzBdKVxyXG4gICAgc3RhcnREYXRlLnNldEhvdXJzKHN0YXJ0VGltZSk7XHJcbiAgICBzdGFydERhdGUuc2V0TWludXRlcyhwYXJzZUludChjdXJyZW50SG91ci5zcGxpdChcIjpcIilbMV0pID4gMCA/IHBhcnNlSW50KGN1cnJlbnRIb3VyLnNwbGl0KFwiOlwiKVsxXSkgOiAwKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRTZWNvbmRzKDApO1xyXG5cclxuICAgIHJldHVybiBzdGFydERhdGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlRW5kVGltZShzdGFydERhdGU6IERhdGUsIGN1cnJlbnRIb3VyOiBzdHJpbmcsIHBsYW5PcmRlcjogUGxhbk9yZGVyKTogRGF0ZSB7XHJcbiAgICBsZXQgZW5kVGltZTogRGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcblxyXG4gICAgbGV0IHNwbGl0SG91ciA9IGN1cnJlbnRIb3VyLnNwbGl0KFwiOlwiKTtcclxuICAgIGNvbnN0IG5ld0VuZE1pbnV0ZXMgPSBzcGxpdEhvdXJbMV0gPT09IFwiMDBcIiA/IDMwIDogMDtcclxuICAgIGNvbnN0IG5ld0VuZEhvdXIgPSBzcGxpdEhvdXJbMV0gPT09IFwiMzBcIiA/IChwYXJzZUludChzcGxpdEhvdXJbMF0pICsgMSkgOiBwYXJzZUludChzcGxpdEhvdXJbMF0pO1xyXG4gICAgZW5kVGltZS5zZXRIb3VycyhuZXdFbmRIb3VyKTtcclxuICAgIGVuZFRpbWUuc2V0TWludXRlcyhuZXdFbmRNaW51dGVzKTtcclxuICAgIGxldCBhc3NlbWJseVRpbWUgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZShwbGFuT3JkZXIpICogNjAgKiAxMDAwO1xyXG4gICAgZW5kVGltZS5zZXRUaW1lKGVuZFRpbWUuZ2V0VGltZSgpICsgYXNzZW1ibHlUaW1lKTtcclxuXHJcbiAgICByZXR1cm4gZW5kVGltZTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgb3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgdGhpcy5zaG93Tm90ZURpYWxvZyA9IHRydWU7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh0aGlzLnBsYW5uaW5nUG9wdXBSZWYpIHtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnBsYW5PcmRlciA9IHBsYW5PcmRlcjtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnRyYW5zcG9ydERheSA9IHRyYW5zcG9ydERheTtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLndlZWsgPSB3ZWVrO1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYudHJhbnNhY3Rpb24gPSB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCh2YWx1ZTogeyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMuYXZhaWxhYmlsaXR5LnB1c2godmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrQXZhaWxhYmxlKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBsZXQgdHJhbnNwb3J0ID0gdGhpcy5hdmFpbGFiaWxpdHkuZmluZCh0cmFuc3BvcnRPYmplY3QgPT4gdHJhbnNwb3J0T2JqZWN0LnRyYW5zcG9ydERheSA9PT0gdHJhbnNwb3J0RGF5KTtcclxuICAgIHJldHVybiB0cmFuc3BvcnQgJiYgIXRyYW5zcG9ydC5hdmFpbGFibGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGltZUNoYW5nZUV2ZW50KHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgb2JqOiBQbGFuT3JkZXIpIHtcclxuICAgIGxldCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IHdlZWs7XHJcbiAgICBsZXQgb3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQocGxhbk9yZGVyID0+IHBsYW5PcmRlci50cmFuc0lkID09PSBvYmoudHJhbnNJZCk7XHJcbiAgICBvcmRlci5zdGFydFRpbWUgPSBuZXcgRGF0ZShvYmpbJ3N0YXJ0VGltZSddKTtcclxuICAgIG9yZGVyLmVuZFRpbWUgPSBuZXcgRGF0ZShvYmpbJ2VuZFRpbWUnXSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe29sZFdlZWs6IG9sZFdlZWssIHdlZWs6IHdlZWssIGFjdGlvbjogdGhpcy5wbGFubmluZ0FjdGlvbnMuUGxhbk9yZGVyfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlTW92ZUV2ZW50KG1vdmVEYXRhOiB7XHJcbiAgICBob3VyOiBzdHJpbmcsXHJcbiAgICBzY2hlZHVsZWRPYmplY3Q6IE9iamVjdFxyXG4gIH0sIHRyYW5zcG9ydDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0FycjogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKG1vdmVEYXRhLnNjaGVkdWxlZE9iamVjdFsnb2JqJ11bJ2lkJ10pO1xyXG4gICAgLy9yZW1vdmUgZnJvbSBvbGQgdHJhbnNwb3J0XHJcbiAgICB3ZWVrQXJyLmZvckVhY2goKChyb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSA9PiB7XHJcbiAgICAgIHJvdy5mb3JFYWNoKCh3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpID0+IHtcclxuICAgICAgICBpZiAod2Vla0RheT8ucGxhbm5lZE9yZGVycz8uZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgICAgIHdlZWtEYXkucGxhbm5lZE9yZGVycy5zcGxpY2Uod2Vla0RheS5wbGFubmVkT3JkZXJzLmluZGV4T2YocGxhbk9yZGVyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pKVxyXG5cclxuICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgLy9yZXN0b3JlIG9yZGVyXHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKFtwbGFuT3JkZXJdKTtcclxuXHJcbiAgICAgIC8vc2V0IG5ldyBkYXRlIGZvciBvcmRlciBhbmQgcGxhbiBpdCBvbiBuZXcgdHJhbnNwb3J0XHJcbiAgICAgIGxldCBuZXdEYXRlOiBEYXRlID0gbmV3IERhdGUodHJhbnNwb3J0LmRhdGUpO1xyXG4gICAgICBsZXQgc3BsaXRUaW1lOiBzdHJpbmdbXSA9IG1vdmVEYXRhLmhvdXIuc3BsaXQoXCI6XCIpO1xyXG4gICAgICBuZXdEYXRlLnNldEhvdXJzKHBhcnNlSW50KHNwbGl0VGltZVswXSkpO1xyXG4gICAgICBuZXdEYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQoc3BsaXRUaW1lWzFdKSk7XHJcbiAgICAgIG5ld0RhdGUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgcGxhbk9yZGVyLnN0YXJ0VGltZSA9IG5ld0RhdGU7XHJcbiAgICAgIGxldCBlbmREYXRlID0gbmV3IERhdGUocGxhbk9yZGVyLnN0YXJ0VGltZSk7XHJcbiAgICAgIHBsYW5PcmRlci5lbmRUaW1lID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuYWRkTWludXRlcyhlbmREYXRlLCBtb3ZlRGF0YS5zY2hlZHVsZWRPYmplY3RbJ29iaiddWydoZWlnaHQnXSk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKHRyYW5zcG9ydCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2VxdWVuY2VPcmRlclZhbHVlKHBsYW5PcmRlcilcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpXHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnQsIHdlZWspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU1vdmVOb3JtYWxFdmVudCh0cmFuc0lkOiBzdHJpbmcsIHRyYW5zcG9ydDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0FycjogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KHRyYW5zSWQpKTtcclxuICAgIC8vcmVtb3ZlIGZyb20gb2xkIHRyYW5zcG9ydFxyXG4gICAgd2Vla0Fyci5mb3JFYWNoKCgocm93OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkgPT4ge1xyXG4gICAgICByb3cuZm9yRWFjaCgod2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSA9PiB7XHJcbiAgICAgICAgaWYgKHdlZWtEYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgICB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHdlZWtEYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHBsYW5PcmRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KSlcclxuXHJcbiAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgIC8vcmVzdG9yZSBvcmRlclxyXG4gICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5yZXN0b3JlRGVsaXZlcnlTZXR0aW5ncyhbcGxhbk9yZGVyXSk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKHRyYW5zcG9ydCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2VxdWVuY2VPcmRlclZhbHVlKHBsYW5PcmRlcilcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpXHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnQsIHdlZWspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFZGl0UGxhbm5lZE9yZGVyKHBsYW5PcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIHRoaXMub3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyLCB0cmFuc3BvcnREYXksIHdlZWspO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
518
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUc5RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFJN0csT0FBTyxFQUNMLHFDQUFxQyxFQUN0QyxNQUFNLHVGQUF1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QyxDQUFDO2dCQUN6QyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDM0MsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQzFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3ZEO1FBQ0gsQ0FBQztLQUFBO0lBR00sc0JBQXNCLENBQUMsU0FBb0IsRUFBRSxZQUFzQyxFQUFFLElBQWdDO1FBQzFILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7OztZQXRpQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBMUVPLHVCQUF1QjtZQUN2QixrQkFBa0I7WUFDbEIsMkJBQTJCO1lBSzNCLGFBQWE7WUF2Qm5CLGlCQUFpQjtZQXFDWCxpQkFBaUI7WUFOakIsZ0JBQWdCOzs7b0JBb0VyQixZQUFZLFNBQUMscUNBQXFDOzJCQUtsRCxTQUFTLFNBQUMsY0FBYzt5QkFHeEIsU0FBUyxTQUFDLFlBQVk7cUNBR3RCLFNBQVMsU0FBQyxlQUFlOzBCQUt6QixLQUFLOzhCQUdMLEtBQUs7c0NBR0wsS0FBSzsyQ0FHTCxNQUFNOzBDQVdOLE1BQU07d0JBNkNOLFdBQVcsU0FBQyxxQ0FBcUM7dUJBT2pELFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXN9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLWNhbGVuZGFyLW1vZGVzLmVudW1cIjtcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzfSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy12aWV3LW1vZGVzLmVudW1cIjtcclxuaW1wb3J0IHtEZWxpdmVyeVBsYW5uaW5nU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWstZGF5LmJvXCI7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcclxuaW1wb3J0IHtHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm9cIjtcclxuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnRcclxufSBmcm9tIFwiLi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXAvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlL2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctdGlsZS1tb2Rlcy5lbnVtXCI7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnN9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXVwZGF0ZS1hY3Rpb25zLmVudW1cIjtcclxuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm9cIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cCAjcGxhbm5pbmdQb3B1cCAqbmdJZj1cInNob3dOb3RlRGlhbG9nXCIgKGNsb3NlRXZlbnQpPVwic2hvd05vdGVEaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU3VjY2VlZGVkUGxhbkFjdGlvbik9XCJoYW5kbGVQb3B1cFBsYW5FdmVudCgkZXZlbnQpXCI+PC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cD5cclxuICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwICpuZ0lmPVwic2hvd1NldHRpbmdzRGlhbG9nXCIgW3RyYW5zcG9ydERheV09XCJzZWxlY3RlZFRyYW5zcG9ydERheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXZhaWxhYmlsaXR5Q2hlY2tlZCk9XCJoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2F2ZUFjdGlvbik9XCJoYW5kbGVTZXR0aW5nc1NhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VFdmVudCk9XCJzaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZVwiPjwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cD5cclxuICAgIDxkaXYgY2xhc3M9XCJkZWxpdmVyeS1vdmVydmlldy13cmFwcGVyXCIgW2NsYXNzLnNpZGViYXJdPVwiY3VycmVudFZpZXdNb2RlID09PSAnREFZU19BUk9VTkQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aWxlLXZpZXctbW9kZXMgcm93XCI+XHJcbiAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5Ob3JtYWxcIiBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUaWxlTW9kZSA9PT0gdGlsZU1vZGVzLk5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYWxlbmRhckxpbmVzUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5DYWxlbmRhclwiIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFRpbGVNb2RlID09PSB0aWxlTW9kZXMuQ2FsZW5kYXJcIlxyXG4gICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJEYXlSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwbGFubmluZy1jb21wb25lbnQtd3JhcHBlclwiPlxyXG4gICAgICAgIDxjby1kYXRlLXBsYW5uaW5nIFt2aWV3XT1cImN1cnJlbnRWaWV3TW9kZVwiIFtzZWxlY3RlZERhdGVdPVwiY3VycmVudERhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCI+PC9jby1kYXRlLXBsYW5uaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZGF0ZS1wbGFubmluZ1wiICNyb3dDb250YWluZXIgKm5nRm9yPVwibGV0IHRyYW5zcG9ydFdlZWtSb3cgb2YgcGxhblRyYW5zcG9ydFdlZWtBcnJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgI2NvbHVtbkVsZW1cclxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0cmFuc1BvcnREYXkgb2YgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZVxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXRyYW5zUG9ydERheS5hdmFpbGFibGVPbkRhdGUgfHwgdHJhbnNQb3J0RGF5Lm1heE1pbnV0ZXMgPT09IDAgfHwgY2hlY2tBdmFpbGFibGUodHJhbnNQb3J0RGF5KVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdHJhbnNQb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZSB8fCB0cmFuc1BvcnREYXkubWF4TWludXRlcyA9PT0gMFwiXHJcbiAgICAgICAgICAgIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50LCB0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgKGRyb3ApPVwiZHJvcHBlZCgkZXZlbnQsIHRyYW5zcG9ydFdlZWtSb3csIHRyYW5zUG9ydERheSwgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpKVwiXHJcbiAgICAgICAgICAgIChkcmFnZW5kKT1cImRyYWdFbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFt0cmFuc3BvcnREYXldPVwidHJhbnNQb3J0RGF5XCJcclxuICAgICAgICAgICAgKGRlbGV0ZU9yZGVyRXZlbnQpPVwiaGFuZGxlRGVsZXRlT3JkZXIoJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgICh0aW1lQ2hhbmdlRXZlbnQpPVwiaGFuZGxlVGltZUNoYW5nZUV2ZW50KHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdywkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9wZW5TZXR0aW5nc0RpYWxvZ0V2ZW50KT1cIm9wZW5TZXR0aW5nc0RpYWxvZygkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGNhbGVuZGFyUGxhbkV2ZW50KT1cImhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KCRldmVudCwgdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgIChkZWxldGVPcmRlckxpbmVFdmVudCk9XCJoYW5kbGVEZWxldGVMaW5lKCRldmVudCwgdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgIChlZGl0T3JkZXJFdmVudCk9XCJoYW5kbGVFZGl0UGxhbm5lZE9yZGVyKCRldmVudCwgdHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93KVwiXHJcbiAgICAgICAgICAgIChtb3ZlRXZlbnQpPVwiaGFuZGxlTW92ZUV2ZW50KCRldmVudCx0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3csIHBsYW5UcmFuc3BvcnRXZWVrQXJyKVwiXHJcblxyXG5cclxuICAgICAgICAgID48L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYW5uaW5nQWN0aW9uczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zID0gRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbGVNb2RlczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXM7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHk6IHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlQ29tcG9uZW50KVxyXG4gIHB1YmxpYyBzZXQgdGlsZXModGlsZXM6IFF1ZXJ5TGlzdDxEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdUaWxlQ29tcG9uZW50Pikge1xyXG4gICAgdGhpcy50aWxlc1F1ZXJ5TGlzdCA9IHRpbGVzO1xyXG4gIH07XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Jvd0NvbnRhaW5lcicpIHJvd0NvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdjb2x1bW5FbGVtJykgY29sdW1uRWxlbTogSFRNTERpdkVsZW1lbnQ7XHJcbiAgcHVibGljIGNvbHVtbk51bSA9IDM7IC8vaW5pdGlhbCBjb3VudFxyXG5cclxuICBAVmlld0NoaWxkKCdwbGFubmluZ1BvcHVwJylcclxuICBwdWJsaWMgc2V0IHBsYW5uaW5nUG9wdXBDb21wb25lbnQodmFsdWU6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYgPSB2YWx1ZTtcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50TW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50Vmlld01vZGU6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nVmlld01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMgPSB0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXNldFBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHRpbGVTaXplID0gMzAwOyAvL29uZSB0aWxlIHNob3VsZCBoYXZlIHRoaXMgd2lkdGhcclxuICBwdWJsaWMgcGxhbm5pbmdQb3B1cFJlZjogRGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3UG9wdXBDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd05vdGVEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1NldHRpbmdzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHRpbGVzUXVlcnlMaXN0OiBRdWVyeUxpc3Q8RGVsaXZlcnlQbGFubmluZ092ZXJ2aWV3VGlsZUNvbXBvbmVudD47XHJcbiAgcHVibGljIHNlbGVjdGVkVHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXk7XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0IHBsYW5UcmFuc3BvcnRXZWVrQXJyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnBsYW5UcmFuc3BvcnRXZWVrQXJyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50VGlsZU1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRpbGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBjdXJyZW50VGlsZU1vZGUodGlsZU1vZGU6IERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMpIHtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGN1cnJlbnREYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRTdGFydERhdGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U6IERlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25Db246IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIF9kaWFsb2c6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy9jYWxjdWxhdGluZyB1cG9uIGxvYWRpbmdcclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnNldENvbE51bSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXdcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9yZWNhbGN1bGF0aW5nIHVwb24gYnJvd3NlciB3aW5kb3cgcmVzaXplXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuc2V0Q29sTnVtKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFzeW5jIGRyb3BwZWQoZXY6IERyYWdFdmVudCwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB0cmFuc3BvcnREYXlzOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICBjb25zdCBkYXRhID0gZXYuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJ0ZXh0XCIpO1xyXG4gICAgbGV0IGluZGV4ID0gdHJhbnNwb3J0RGF5cy5pbmRleE9mKHRyYW5zcG9ydERheSlcclxuICAgIGxldCB0aWxlID0gdGhpcy50aWxlc1F1ZXJ5TGlzdC5nZXQoaW5kZXgpO1xyXG4gICAgaWYgKCF0aWxlLmV4cGFuZGVkKSB7XHJcbiAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgIT0gXCJsaW5lc1wiICYmICF0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5tb3ZpbmdUcmFuc0lkKSB7XHJcbiAgICAgIGlmIChkYXRhICYmIHBhcnNlSW50KGRhdGEpKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0VHJhbnNhY3Rpb25CeUlkKHBhcnNlSW50KGRhdGEpKTtcclxuICAgICAgICBjb25zdCBvcmRlcjogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgPSB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb247XHJcbiAgICAgICAgaWYgKG9yZGVyLnRyYW5zYWN0aW9uSW5mbz8uaGVhZGVySW5mb1N0YXR1cz8ucXVhbnRpdHlQbGFubmluZ0ZpbmFsID09PSAwKSB7XHJcbiAgICAgICAgICBjb25zdCBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIocGFyc2VJbnQoZGF0YSkpXHJcbiAgICAgICAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyLCB0cmFuc3BvcnREYXksIHdlZWspO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiT1JERVJfSEFTX0FMUkVBRFlfQkVFTl9QTEFOTkVEXCIpLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZGF0YSAhPSBcImxpbmVzXCIgJiYgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubW92aW5nVHJhbnNJZCkge1xyXG4gICAgICAvLyBhd2FpdCB0aGlzLmhhbmRsZU1vdmVOb3JtYWxFdmVudChkYXRhLCB0cmFuc3BvcnREYXksIHdlZWssIHRoaXMucGxhblRyYW5zcG9ydFdlZWtBcnIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5wbGFuU2VsZWN0ZWRMaW5lcyh0cmFuc3BvcnREYXksIHdlZWspXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbGxvd0Ryb3AoZXY6IERyYWdFdmVudCwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgJiYgdHJhbnNwb3J0RGF5Lm1heE1pbnV0ZXMgPiAwICYmIHRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUpIHtcclxuICAgICAgcmV0dXJuIHRyYW5zcG9ydERheS5taW51dGVzICsgdHJhbnNwb3J0RGF5Lm1pbnV0ZXMgPCB0cmFuc3BvcnREYXkubWF4TWludXRlcyAmJiB0cmFuc3BvcnREYXkubWF4T3JkZXJBbW91bnQgPCB0cmFuc3BvcnREYXkub3JkZXJBbW91bnQgJiYgdHJhbnNwb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc2V0Q29sTnVtKCkge1xyXG4gICAgaWYgKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnZpZXdNb2RlID09PSBEZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzLlNpZGViYXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5OdW0gPSAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2x1bW5OdW0gPSAzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBkcmFnRW5kKGV2OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcldlZWtBcnJheSh3ZWVrQXJyYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICByZXR1cm4gd2Vla0FycmF5LnNsaWNlKDAsIHRoaXMuY29sdW1uTnVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VDaGFuZ2UobmV3RGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZSA9IG5ld0RhdGU7XHJcbiAgICB0aGlzLnJlc2V0UGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlT3JkZXIoZGVsZXRlUmVzdWx0OiBbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10gPSBwbGFubmluZ1RyYW5zcG9ydFdlZWs7XHJcbiAgICBsZXQgb3JkZXIgPSBkZWxldGVSZXN1bHRbMF07XHJcbiAgICBpZiAob3JkZXIpIHtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnMoZGVsZXRlUmVzdWx0WzFdKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChvcmRlcik7XHJcbiAgICAgIGlmIChkZWxldGVSZXN1bHRbMF0ubGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRlbGV0aW5nT3JkZXIgPSBvcmRlcjtcclxuICAgICAgICBkZWxldGVSZXN1bHRbMV0ucGxhbm5lZE9yZGVycy5zcGxpY2UoZGVsZXRlUmVzdWx0WzFdLnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KHtcclxuICAgICAgICAgIG9sZFdlZWs6IG9sZFdlZWssXHJcbiAgICAgICAgICB3ZWVrOiBwbGFubmluZ1RyYW5zcG9ydFdlZWssXHJcbiAgICAgICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRPcmRlclxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoXCJOT19MSU5FU19UT19ERUxFVEVcIiwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVMaW5lKGRlbGV0ZVJlc3VsdDoge1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9LCB3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydFdlZWtSb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlayA9IHRyYW5zcG9ydFdlZWtSb3c7XHJcbiAgICBsZXQgb3JkZXIgPSB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBkZWxldGVSZXN1bHQub3JkZXIudHJhbnNJZCk7XHJcbiAgICBvcmRlci5saW5lcyA9IG9yZGVyLmxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUub3JpZ2luYWxMaW5lTnIgIT09IGRlbGV0ZVJlc3VsdC5saW5lLm9yaWdpbmFsTGluZU5yKTtcclxuICAgIGlmIChvcmRlci5saW5lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICB3ZWVrOiB0cmFuc3BvcnRXZWVrUm93LFxyXG4gICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRMaW5lc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gb3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIGlmICghb3JkZXIubGluZXMpIHtcclxuICAgICAgb3JkZXIubGluZXMgPSBbXTtcclxuICAgIH1cclxuICAgIG9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc3BvcnRPcmRlcnMoIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmVxdWVzdDogR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCA9IG5ldyBHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uaW5nSWQgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50UGxhbm5pbmcucGxhbm5pbmdJZDtcclxuICAgIHJlcXVlc3QuZGF0ZSA9IHRyYW5zcG9ydERheS5kYXRlO1xyXG4gICAgcmVxdWVzdC50cmFuc3BvcnRJZCA9IHRyYW5zcG9ydERheS50cmFuc3BvcnQudHJhbnNwb3J0SWQ7XHJcbiAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycyA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFRyYW5zcG9ydE9yZGVycyhyZXF1ZXN0KTtcclxuICAgIHRyYW5zcG9ydERheS5vcmRlcnNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwbGFuT3JkZXJMaW5lcyhvcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IHdlZWs7XHJcbiAgICBpZiAob3JkZXIubGluZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgb3JkZXIubGluZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBvcmRlci50YXNrcyA9IFtdO1xyXG4gICAgICBvcmRlci50YXNrc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIG9yZGVyLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgbGluZS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIXRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzKSB7XHJcbiAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMgPSBbb3JkZXJdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMucHVzaChvcmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBwbGFubmVkT3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoIChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpO1xyXG4gICAgICAgICAgaWYgKG9yZGVyLnN0YXJ0VGltZSAhPT0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKS5zdGFydFRpbWUpIHtcclxuXHJcbiAgICAgICAgICAgIGlmKCFvcmRlci5wYXJ0RGVsaXZlcnkpIHtcclxuICAgICAgICAgICAgICBvcmRlci5zdGFydFRpbWUgPSBwbGFubmVkT3JkZXIuc3RhcnRUaW1lO1xyXG4gICAgICAgICAgICAgIG9yZGVyLmVuZFRpbWUgPSBwbGFubmVkT3JkZXIuZW5kVGltZTtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5zcGxpY2UodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFubmVkT3JkZXIpKTtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmluZGV4T2YodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKSksIDEpO1xyXG4gICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICAgIG9sZFdlZWs6IG9sZFdlZWssXHJcbiAgICAgICAgd2Vlazogd2VlayxcclxuICAgICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5MaW5lc1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoXCJOT19MSU5FU19UT19QTEFOXCIsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHBsYW5TZWxlY3RlZExpbmVzKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGxldCBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIodGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCk7XHJcbiAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG5cclxuXHJcbiAgICBpZihwbGFuT3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcblxyXG4gICAgICBsZXQgc2VsZWN0ZWRMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKCh0cmFuc0xpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiB0cmFuc0xpbmVzLnNlbGVjdGVkKTtcclxuXHJcblxyXG4gICAgICAvL0RvZXMgdGhlIG9yZGVyIGFscmVhZHkgZXhpc3Q/XHJcbiAgICAgIGlmICh0cmFuc3BvcnREYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgLy9ZZXMgdGhlIG9yZGVyIGV4aXN0c1xyXG5cclxuICAgICAgICAvL0lmIHRoZSBsaW5lKHMpIHdlJ3JlIHRyeWluZyB0byBwbGFuIGFscmVhZHkgYXJlIHBsYW5uZWQgd2UgbmVlZCB0byB2YWxpZGF0ZSBpZiB3ZSBuZWVkIHRvIHBsYW4gYW55d2F5XHJcbiAgICAgICAgbGV0IGNhbnRQbGFuU2VsZWN0ZWRMaW5lczogUGxhbk9yZGVyTGluZVtdID0gW107XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkubGluZXMuZm9yRWFjaCgocGxhbm5lZExpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMuZmluZCgoc2VsZWN0ZWRMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiBzZWxlY3RlZExpbmUubGluZU5yID09PSBwbGFubmVkTGluZS5vcmlnaW5hbExpbmVOcikpIHtcclxuICAgICAgICAgICAgICBjYW50UGxhblNlbGVjdGVkTGluZXMucHVzaChwbGFubmVkTGluZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGlmIChjYW50UGxhblNlbGVjdGVkTGluZXMubGVuZ3RoID09PSBwbGFuT3JkZXIubGluZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoXCJOT19MSU5FU19UT19QTEFOXCIsIHRydWUpO1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcihcIk5PX0xJTkVTX1NFTEVDVEVEXCIsIHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIgPSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKTtcclxuXHJcbiAgICAgICAgLy9BbGwgbGluZXMgdGhhdCBuZWVkIHRvIGJlIHBsYW5uZWQgZm9yIGFuIG9yZGVyIGFyZSBpbiBwbGFuT3JkZXIgbm93XHJcbiAgICAgICAgLy9XaGljaCBtZWFucyB0aGF0IHdlIGp1c3QgZmlsdGVyIHRoZSBsaW5lcyBvdXQgdGhhdCBET04nVCBtYXRjaCBhIHNlbGVjdGVkIGxpbmUgQU5EIGFyZSBwbGFubmVkXHJcbiAgICAgICAgcGxhbk9yZGVyLmxpbmVzLmZpbHRlcihcclxuICAgICAgICAgICh0b1BsYW5MaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiAhcGxhbm5lZE9yZGVyLmxpbmVzLmZpbmQoKHBsYW5uZWRPcmRlckxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHBsYW5uZWRPcmRlckxpbmUub3JpZ2luYWxMaW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpXHJcbiAgICAgICAgICAgICYmICFzZWxlY3RlZExpbmVzLmZpbmQoKHNlbGVjdGVkTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gc2VsZWN0ZWRMaW5lLmxpbmVOciA9PT0gdG9QbGFuTGluZS5vcmlnaW5hbExpbmVOcikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vT3JkZXIgZG9lcyBub3QgZXhpc3QsIGxldHMgcHJlcGFyZSBpdCB3aXRoIHRoZSBzZWxlY3RlZCBsaW5lc1xyXG4gICAgICAgIC8vRmlsdGVyIHRoZSBsaW5lcyBmb3Igb25seSB0aGUgc2VsZWN0ZWQgb25lc1xyXG4gICAgICAgIHBsYW5PcmRlci5saW5lcyA9IHBsYW5PcmRlci5saW5lcy5maWx0ZXIocGxhbm5lZE9yZGVyTGluZSA9PiBzZWxlY3RlZExpbmVzLmZpbmQoKHNlbGVjdGVkTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gcGxhbm5lZE9yZGVyTGluZS5vcmlnaW5hbExpbmVOciA9PT0gc2VsZWN0ZWRMaW5lLmxpbmVOcikpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vU2VuZCB0aGUgcHJlcGFyZWQgb3JkZXIgdG8gdGhlXHJcbiAgICB0aGlzLm9wZW5QbGFubmluZ1BvcHVwKHBsYW5PcmRlciwgdHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VPcmRlclZhbHVlKG9yZGVyOiBQbGFuT3JkZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIG9yZGVyLnBsYW5uZWRMaW5lSWQgPSBhd2FpdCB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRPcmRlclNlcXVlbmNlVmFsdWUoKTtcclxuICAgIG9yZGVyLmNoYWluZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUG9wdXBQbGFuRXZlbnQoZXZlbnQ6IFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11dKSB7XHJcblxyXG5cclxuICAgIHRoaXMuc2hvd05vdGVEaWFsb2cgPSBmYWxzZTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKGV2ZW50WzFdKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0U2VxdWVuY2VPcmRlclZhbHVlKGV2ZW50WzBdKVxyXG4gICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChldmVudFswXSlcclxuICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMoZXZlbnRbMF0sIGV2ZW50WzFdLCBldmVudFsyXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2V0dGluZ3NTYXZlKGNoYW5nZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgIC8vIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblNldHRpbmdzRGlhbG9nKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVHJhbnNwb3J0RGF5ID0gdHJhbnNwb3J0RGF5O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmFuc3BvcnREYXkpIHtcclxuICAgICAgdGhpcy5zaG93U2V0dGluZ3NEaWFsb2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUNhbGVuZGFyUGxhbkV2ZW50KGRhdGE6IHtcclxuICAgIGN1cnJlbnRIb3VyOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBzdHJpbmdcclxuICB9LCB0cmFuc3BvcnRXZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgcGxhbk9yZGVyOiBQbGFuT3JkZXI7XHJcbiAgICBpZiAoZGF0YS5kYXRhID09PSBcImZhbHNlXCIgJiYgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRyYW5zSWQpIHtcclxuICAgICAgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlPy5jdXJyZW50VHJhbnNJZClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihwYXJzZUludChkYXRhLmRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGxhbk9yZGVyICYmIGRhdGEuY3VycmVudEhvdXIpIHtcclxuXHJcblxyXG4gICAgICBwbGFuT3JkZXIuc3RhcnRUaW1lID0gdGhpcy5jYWxjdWxhdGVTdGFydFRpbWUodHJhbnNwb3J0V2Vla0RheSwgZGF0YS5jdXJyZW50SG91cik7XHJcbiAgICAgIHBsYW5PcmRlci5lbmRUaW1lID0gdGhpcy5jYWxjdWxhdGVFbmRUaW1lKHBsYW5PcmRlci5zdGFydFRpbWUsIGRhdGEuY3VycmVudEhvdXIsIHBsYW5PcmRlcik7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnRXZWVrRGF5KTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKVxyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcilcclxuICAgICAgYXdhaXQgdGhpcy5wbGFuT3JkZXJMaW5lcyhwbGFuT3JkZXIsIHRyYW5zcG9ydFdlZWtEYXksIHdlZWspO1xyXG4gICAgICBpZiAoZGF0YS5kYXRhID09PSBcImZhbHNlXCIgJiYgdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby51dWlkKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0VHJhbnNhY3Rpb25CeUlkKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRUcmFuc0lkKTtcclxuICAgICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5zYXZlVHJhbnNhY3Rpb24oKTtcclxuICAgICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5jaGVja1JlZlRyYW5zYWN0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxjdWxhdGVTdGFydFRpbWUodHJhbnNwb3J0V2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBjdXJyZW50SG91cjogc3RyaW5nKTogRGF0ZSB7XHJcbiAgICBsZXQgc3RhcnREYXRlOiBEYXRlID0gbmV3IERhdGUodHJhbnNwb3J0V2Vla0RheS5kYXRlKTtcclxuICAgIGxldCBzdGFydFRpbWU6IG51bWJlciA9IHBhcnNlSW50KGN1cnJlbnRIb3VyLnNwbGl0KFwiOlwiKVswXSlcclxuICAgIHN0YXJ0RGF0ZS5zZXRIb3VycyhzdGFydFRpbWUpO1xyXG4gICAgc3RhcnREYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoXCI6XCIpWzFdKSA+IDAgPyBwYXJzZUludChjdXJyZW50SG91ci5zcGxpdChcIjpcIilbMV0pIDogMCk7XHJcbiAgICBzdGFydERhdGUuc2V0U2Vjb25kcygwKTtcclxuXHJcbiAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZUVuZFRpbWUoc3RhcnREYXRlOiBEYXRlLCBjdXJyZW50SG91cjogc3RyaW5nLCBwbGFuT3JkZXI6IFBsYW5PcmRlcik6IERhdGUge1xyXG4gICAgbGV0IGVuZFRpbWU6IERhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG5cclxuICAgIGxldCBzcGxpdEhvdXIgPSBjdXJyZW50SG91ci5zcGxpdChcIjpcIik7XHJcbiAgICBjb25zdCBuZXdFbmRNaW51dGVzID0gc3BsaXRIb3VyWzFdID09PSBcIjAwXCIgPyAzMCA6IDA7XHJcbiAgICBjb25zdCBuZXdFbmRIb3VyID0gc3BsaXRIb3VyWzFdID09PSBcIjMwXCIgPyAocGFyc2VJbnQoc3BsaXRIb3VyWzBdKSArIDEpIDogcGFyc2VJbnQoc3BsaXRIb3VyWzBdKTtcclxuICAgIGVuZFRpbWUuc2V0SG91cnMobmV3RW5kSG91cik7XHJcbiAgICBlbmRUaW1lLnNldE1pbnV0ZXMobmV3RW5kTWludXRlcyk7XHJcbiAgICBsZXQgYXNzZW1ibHlUaW1lID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UudG90YWxBc3NlbWJseVRpbWUocGxhbk9yZGVyKSAqIDYwICogMTAwMDtcclxuICAgIGVuZFRpbWUuc2V0VGltZShlbmRUaW1lLmdldFRpbWUoKSArIGFzc2VtYmx5VGltZSk7XHJcblxyXG4gICAgcmV0dXJuIGVuZFRpbWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIG9wZW5QbGFubmluZ1BvcHVwKHBsYW5PcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIHRoaXMuc2hvd05vdGVEaWFsb2cgPSB0cnVlO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5wbGFubmluZ1BvcHVwUmVmKSB7XHJcbiAgICAgIHRoaXMucGxhbm5pbmdQb3B1cFJlZi5wbGFuT3JkZXIgPSBwbGFuT3JkZXI7XHJcbiAgICAgIHRoaXMucGxhbm5pbmdQb3B1cFJlZi50cmFuc3BvcnREYXkgPSB0cmFuc3BvcnREYXk7XHJcbiAgICAgIHRoaXMucGxhbm5pbmdQb3B1cFJlZi53ZWVrID0gd2VlaztcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnRyYW5zYWN0aW9uID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUF2YWlsYWJpbGl0eUNoZWNrZWQodmFsdWU6IHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9KSB7XHJcbiAgICB0aGlzLmF2YWlsYWJpbGl0eS5wdXNoKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgbGV0IHRyYW5zcG9ydCA9IHRoaXMuYXZhaWxhYmlsaXR5LmZpbmQodHJhbnNwb3J0T2JqZWN0ID0+IHRyYW5zcG9ydE9iamVjdC50cmFuc3BvcnREYXkgPT09IHRyYW5zcG9ydERheSk7XHJcbiAgICByZXR1cm4gdHJhbnNwb3J0ICYmICF0cmFuc3BvcnQuYXZhaWxhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRpbWVDaGFuZ2VFdmVudCh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIG9iajogUGxhbk9yZGVyKSB7XHJcbiAgICBsZXQgb2xkV2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10gPSB3ZWVrO1xyXG4gICAgbGV0IG9yZGVyOiBQbGFuT3JkZXIgPSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKHBsYW5PcmRlciA9PiBwbGFuT3JkZXIudHJhbnNJZCA9PT0gb2JqLnRyYW5zSWQpO1xyXG4gICAgb3JkZXIuc3RhcnRUaW1lID0gbmV3IERhdGUob2JqWydzdGFydFRpbWUnXSk7XHJcbiAgICBvcmRlci5lbmRUaW1lID0gbmV3IERhdGUob2JqWydlbmRUaW1lJ10pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KHtvbGRXZWVrOiBvbGRXZWVrLCB3ZWVrOiB3ZWVrLCBhY3Rpb246IHRoaXMucGxhbm5pbmdBY3Rpb25zLlBsYW5PcmRlcn0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU1vdmVFdmVudChtb3ZlRGF0YToge1xyXG4gICAgaG91cjogc3RyaW5nLFxyXG4gICAgc2NoZWR1bGVkT2JqZWN0OiBPYmplY3RcclxuICB9LCB0cmFuc3BvcnQ6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHdlZWtBcnI6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihtb3ZlRGF0YS5zY2hlZHVsZWRPYmplY3RbJ29iaiddWydpZCddKTtcclxuICAgIC8vcmVtb3ZlIGZyb20gb2xkIHRyYW5zcG9ydFxyXG4gICAgd2Vla0Fyci5mb3JFYWNoKCgocm93OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkgPT4ge1xyXG4gICAgICByb3cuZm9yRWFjaCgod2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSA9PiB7XHJcbiAgICAgICAgaWYgKHdlZWtEYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgICB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHdlZWtEYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHBsYW5PcmRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KSlcclxuXHJcbiAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgIC8vcmVzdG9yZSBvcmRlclxyXG4gICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5yZXN0b3JlRGVsaXZlcnlTZXR0aW5ncyhbcGxhbk9yZGVyXSk7XHJcblxyXG4gICAgICAvL3NldCBuZXcgZGF0ZSBmb3Igb3JkZXIgYW5kIHBsYW4gaXQgb24gbmV3IHRyYW5zcG9ydFxyXG4gICAgICBsZXQgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRyYW5zcG9ydC5kYXRlKTtcclxuICAgICAgbGV0IHNwbGl0VGltZTogc3RyaW5nW10gPSBtb3ZlRGF0YS5ob3VyLnNwbGl0KFwiOlwiKTtcclxuICAgICAgbmV3RGF0ZS5zZXRIb3VycyhwYXJzZUludChzcGxpdFRpbWVbMF0pKTtcclxuICAgICAgbmV3RGF0ZS5zZXRNaW51dGVzKHBhcnNlSW50KHNwbGl0VGltZVsxXSkpO1xyXG4gICAgICBuZXdEYXRlLnNldFNlY29uZHMoMCk7XHJcbiAgICAgIHBsYW5PcmRlci5zdGFydFRpbWUgPSBuZXdEYXRlO1xyXG4gICAgICBsZXQgZW5kRGF0ZSA9IG5ldyBEYXRlKHBsYW5PcmRlci5zdGFydFRpbWUpO1xyXG4gICAgICBwbGFuT3JkZXIuZW5kVGltZSA9IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmFkZE1pbnV0ZXMoZW5kRGF0ZSwgbW92ZURhdGEuc2NoZWR1bGVkT2JqZWN0WydvYmonXVsnaGVpZ2h0J10pO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnQpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKVxyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0LCB3ZWVrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVNb3ZlTm9ybWFsRXZlbnQodHJhbnNJZDogc3RyaW5nLCB0cmFuc3BvcnQ6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHdlZWtBcnI6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihwYXJzZUludCh0cmFuc0lkKSk7XHJcbiAgICAvL3JlbW92ZSBmcm9tIG9sZCB0cmFuc3BvcnRcclxuICAgIHdlZWtBcnIuZm9yRWFjaCgoKHJvdzogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pID0+IHtcclxuICAgICAgcm93LmZvckVhY2goKHdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGlmICh3ZWVrRGF5Py5wbGFubmVkT3JkZXJzPy5maW5kKG9yZGVyID0+IG9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFuT3JkZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSkpXHJcblxyXG4gICAgaWYgKHBsYW5PcmRlcikge1xyXG4gICAgICAvL3Jlc3RvcmUgb3JkZXJcclxuICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24ucmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3MoW3BsYW5PcmRlcl0pO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnQpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKVxyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0LCB3ZWVrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgaGFuZGxlRWRpdFBsYW5uZWRPcmRlcihwbGFuT3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICB0aGlzLm9wZW5QbGFubmluZ1BvcHVwKHBsYW5PcmRlciwgdHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuICB9XHJcbn1cclxuIl19
|