@hmcts/ccd-case-ui-toolkit 5.0.44-angular11-updgrade-welsh-release-v4 → 5.0.44-angular11-welsh-release-part1-2
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/hmcts-ccd-case-ui-toolkit.umd.js +139 -99
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
- package/esm2015/lib/app.config.js +1 -1
- package/esm2015/lib/components/tabs/tabs.component.js +2 -1
- package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +2 -1
- package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.js +31 -25
- package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +6 -1
- package/esm2015/lib/shared/components/palette/case-flag/read-case-flag-field.component.js +18 -12
- package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +11 -7
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +4 -3
- package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/palette.module.js +6 -6
- package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +7 -5
- package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +7 -5
- package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +7 -5
- package/esm2015/lib/shared/components/search-filters/search-filters.component.js +1 -1
- package/esm2015/lib/shared/components/search-result/search-result.component.js +17 -15
- package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +7 -5
- package/esm2015/lib/shared/services/request/request.options.builder.js +7 -1
- package/esm2015/lib/shared/services/window/window.service.js +1 -1
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js +136 -96
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
- package/lib/app.config.d.ts.map +1 -1
- package/lib/components/tabs/tabs.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
- package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
- package/lib/shared/services/window/window.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -314,4 +314,4 @@ SearchFiltersComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SearchFiltersCompo
|
|
|
314
314
|
}], onJurisdiction: [{
|
|
315
315
|
type: Output
|
|
316
316
|
}] }); })();
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC1maWx0ZXJzL3NlYXJjaC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zZWFyY2gtZmlsdGVycy9zZWFyY2gtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0lDTC9ELGtDQUFzRDtJQUFBLFlBQXlCOztJQUFBLGlCQUFTOzs7SUFBaEQsOEJBQWE7SUFBQyxlQUF5QjtJQUF6QixxREFBeUI7OztJQVMvRSxrQ0FBd0U7SUFBQSxZQUEwQjs7SUFBQSxpQkFBUzs7O0lBQWxELCtCQUFjO0lBQUMsZUFBMEI7SUFBMUIsc0RBQTBCOzs7O0lBTWxHLDhCQUFpRTtJQUMvRCwyQ0FB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O1FBcENxQyxlQUE0QjtRQUE1QixzREFBNEI7UUFHckIsZUFBa0M7UUFBbEMscUVBQWtDO1FBRXJELGVBQW1DO1FBQW5DLG1EQUFtQztRQUV2QyxlQUFnQjtRQUFoQiwyQ0FBZ0I7UUFLSSxlQUErQjtRQUEvQiwwREFBK0I7UUFDbkUsZUFBcUM7UUFBckMsdURBQXFDLGtDQUFBO1FBR3BCLGVBQWdDO1FBQWhDLDJEQUFnQztRQUlyQixlQUF3QztRQUF4Qyw2REFBd0M7UUFRdEUsZUFBZ0Q7UUFBaEQsa0VBQWdELGlEQUFBO1FBQ2hELG9FQUFpRDtRQUN2RCxlQUNGO1FBREUsZ0VBQ0Y7UUFFUSxlQUF1QztRQUF2Qyw4REFBdUM7UUFBQyxvRUFBaUQ7UUFDL0YsZUFDRjtRQURFLGdFQUNGOzt1RkRYVyxzQkFBc0I7Y0FMbEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFdBQVcsRUFBRSxpQ0FBaUM7YUFDL0M7eUpBU1EsYUFBYTtrQkFEbkIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQUlDLE9BQU87a0JBRGIsTUFBTTtZQUlBLE9BQU87a0JBRGIsTUFBTTtZQUlBLGNBQWM7a0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZVN0YXRlIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1zdGF0ZS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlVHlwZUxpdGUgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLXR5cGUtbGl0ZS5tb2RlbCc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb24gfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9qdXJpc2RpY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IEp1cmlzZGljdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9qdXJpc2RpY3Rpb24vanVyaXNkaWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXIvb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3cvd2luZG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL2RvbWFpbi9zZWFyY2gtaW5wdXQubW9kZWwnO1xuXG5jb25zdCBKVVJJU0RJQ1RJT05fTE9DX1NUT1JBR0UgPSAnc2VhcmNoLWp1cmlzZGljdGlvbic7XG5jb25zdCBNRVRBX0ZJRUxEU19MT0NfU1RPUkFHRSA9ICdzZWFyY2gtbWV0YWRhdGEtZmllbGRzJztcbmNvbnN0IEZPUk1fR1JPVVBfVkFMVUVfTE9DX1NUT1JBR0UgPSAnc2VhcmNoLWZvcm0tZ3JvdXAtdmFsdWUnO1xuY29uc3QgQ0FTRV9UWVBFX0xPQ19TVE9SQUdFID0gJ3NlYXJjaC1jYXNlVHlwZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtc2VhcmNoLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxufSlcblxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgUEFSQU1fSlVSSVNESUNUSU9OID0gJ2p1cmlzZGljdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBQQVJBTV9DQVNFX1RZUEUgPSAnY2FzZS10eXBlJztcbiAgcHVibGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfU1RBVEUgPSAnY2FzZS1zdGF0ZSc7XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMganVyaXNkaWN0aW9uczogSnVyaXNkaWN0aW9uW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9BcHBseTogYm9vbGVhbjtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uQXBwbHk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25SZXNldDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkp1cmlzZGljdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHNlYXJjaElucHV0czogU2VhcmNoSW5wdXRbXTtcbiAgcHVibGljIHNlYXJjaElucHV0c1JlYWR5OiBib29sZWFuO1xuXG4gIHB1YmxpYyBzZWxlY3RlZDoge1xuICAgIGp1cmlzZGljdGlvbj86IEp1cmlzZGljdGlvbixcbiAgICBjYXNlVHlwZT86IENhc2VUeXBlTGl0ZSxcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXAsXG4gICAgY2FzZVN0YXRlPzogQ2FzZVN0YXRlLFxuICAgIHBhZ2U/OiBudW1iZXIsXG4gICAgbWV0YWRhdGFGaWVsZHM/OiBzdHJpbmdbXVxuICB9O1xuXG4gIHB1YmxpYyBzZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcz86IENhc2VUeXBlTGl0ZVtdO1xuXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkganVyaXNkaWN0aW9uU2VydmljZTogSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XG4gICAgY29uc3QganVyaXNkaWN0aW9uID0gdGhpcy53aW5kb3dTZXJ2aWNlLmdldExvY2FsU3RvcmFnZShKVVJJU0RJQ1RJT05fTE9DX1NUT1JBR0UpO1xuICAgIGlmICh0aGlzLmp1cmlzZGljdGlvbnMubGVuZ3RoID09PSAxIHx8IGp1cmlzZGljdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbnNbMF07XG4gICAgICBpZiAoanVyaXNkaWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RvcmFnZUp1cmlzZGljdGlvbiA9IEpTT04ucGFyc2UoanVyaXNkaWN0aW9uKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbnMuZmlsdGVyKGogPT4gai5pZCA9PT0gbG9jYWxTdG9yYWdlSnVyaXNkaWN0aW9uLmlkKVswXTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25KdXJpc2RpY3Rpb25JZENoYW5nZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWQuZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXA7XG4gICAgdGhpcy5zZWxlY3RlZC5wYWdlID0gMTtcbiAgICB0aGlzLnNlbGVjdGVkLm1ldGFkYXRhRmllbGRzID0gdGhpcy5nZXRNZXRhZGF0YUZpZWxkcygpO1xuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuZ2V0UXVlcnlQYXJhbXMoKVxuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy53aW5kb3dTZXJ2aWNlLnJlbW92ZUxvY2FsU3RvcmFnZShGT1JNX0dST1VQX1ZBTFVFX0xPQ19TVE9SQUdFKTtcbiAgICB0aGlzLndpbmRvd1NlcnZpY2UucmVtb3ZlTG9jYWxTdG9yYWdlKENBU0VfVFlQRV9MT0NfU1RPUkFHRSk7XG4gICAgdGhpcy53aW5kb3dTZXJ2aWNlLnJlbW92ZUxvY2FsU3RvcmFnZShKVVJJU0RJQ1RJT05fTE9DX1NUT1JBR0UpO1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoTUVUQV9GSUVMRFNfTE9DX1NUT1JBR0UpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fTtcbiAgICBpZiAodGhpcy5qdXJpc2RpY3Rpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbnNbMF07XG4gICAgICB0aGlzLm9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKTtcbiAgICB9XG4gICAgdGhpcy5vblJlc2V0LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUdyb3VwO1xuICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IDE7XG4gICAgdGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcyA9IHRoaXMuZ2V0TWV0YWRhdGFGaWVsZHMoKTtcbiAgICB0aGlzLnBvcHVsYXRlVmFsdWVzSW5Mb2NhbFN0b3JhZ2UoKTtcbiAgICB0aGlzLm9uQXBwbHkuZW1pdCh7XG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLmdldFF1ZXJ5UGFyYW1zKClcbiAgICB9KTtcbiAgICB0aGlzLnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3B1bGF0ZVZhbHVlc0luTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxVRV9MT0NfU1RPUkFHRSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWQuZm9ybUdyb3VwLnZhbHVlKSk7XG4gICAgdGhpcy53aW5kb3dTZXJ2aWNlLnNldExvY2FsU3RvcmFnZShNRVRBX0ZJRUxEU19MT0NfU1RPUkFHRSwgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcykpO1xuICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoSlVSSVNESUNUSU9OX0xPQ19TVE9SQUdFLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbikpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKSB7XG4gICAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKENBU0VfVFlQRV9MT0NfU1RPUkFHRSwgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXRhZGF0YUZpZWxkcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hJbnB1dHNcbiAgICAgICAgLmZpbHRlcihzZWFyY2hJbnB1dCA9PiBzZWFyY2hJbnB1dC5maWVsZC5tZXRhZGF0YSA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcChzZWFyY2hJbnB1dCA9PiBzZWFyY2hJbnB1dC5maWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzU2VhcmNoYWJsZSgpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuICAgIHJlc3VsdCA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gIT09IG51bGw7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICYmIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlICE9PSBudWxsO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaXNTZWFyY2hhYmxlQW5kU2VhcmNoSW5wdXRzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWFyY2hhYmxlKCkgJiYgdGhpcy5zZWFyY2hJbnB1dHNSZWFkeTtcbiAgfVxuXG4gIHB1YmxpYyBvbkp1cmlzZGljdGlvbklkQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSBudWxsO1xuICAgIHRoaXMuanVyaXNkaWN0aW9uU2VydmljZS5hbm5vdW5jZVNlbGVjdGVkSnVyaXNkaWN0aW9uKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKTtcbiAgICB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzID0gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY2FzZVR5cGVzO1xuICAgIHRoaXMuc2VsZWN0Q2FzZVR5cGUodGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyk7XG4gICAgdGhpcy5vbkp1cmlzZGljdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VUeXBlSWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICB0aGlzLnNlYXJjaElucHV0c1JlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hJbnB1dHMgPSBbXTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoSW5wdXRzKFxuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQsXG4gICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkXG4gICAgKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuc2VhcmNoSW5wdXRzUmVhZHkgPSB0cnVlKVxuICAgICkuc3Vic2NyaWJlKHNlYXJjaElucHV0cyA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRzID0gc2VhcmNoSW5wdXRzLnNvcnQodGhpcy5vcmRlclNlcnZpY2Uuc29ydEFzYyk7XG5cbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy53aW5kb3dTZXJ2aWNlLmdldExvY2FsU3RvcmFnZShGT1JNX0dST1VQX1ZBTFVFX0xPQ19TVE9SQUdFKTtcbiAgICAgICAgbGV0IGZvcm1WYWx1ZU9iamVjdCA9IG51bGw7XG4gICAgICAgIGlmIChmb3JtVmFsdWUpIHtcbiAgICAgICAgICBmb3JtVmFsdWVPYmplY3QgPSBKU09OLnBhcnNlKGZvcm1WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VhcmNoSW5wdXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uZmllbGQuZWxlbWVudFBhdGgpIHtcbiAgICAgICAgICAgIGl0ZW0uZmllbGQuaWQgPSBpdGVtLmZpZWxkLmlkICsgJy4nICsgaXRlbS5maWVsZC5lbGVtZW50UGF0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaXRlbS5maWVsZC5sYWJlbCA9IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgaWYgKGZvcm1WYWx1ZU9iamVjdCkge1xuICAgICAgICAgICAgaXRlbS5maWVsZC52YWx1ZSA9IGZvcm1WYWx1ZU9iamVjdFtpdGVtLmZpZWxkLmlkXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ1NlYXJjaCBpbnB1dCBmaWVsZHMgcmVxdWVzdCB3aWxsIGJlIGRpc2NhcmRlZCByZWFzb246ICcsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNKdXJpc2RpY3Rpb25TZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPT09IG51bGwgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldFF1ZXJ5UGFyYW1zKCkge1xuICAgIC8vIFNhdmUgZmlsdGVycyBhcyBxdWVyeSBwYXJhbWV0ZXJzIGZvciBjdXJyZW50IHJvdXRlXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24pIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW3RoaXMuUEFSQU1fSlVSSVNESUNUSU9OXSA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmlkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkge1xuICAgICAgcXVlcnlQYXJhbXNbdGhpcy5QQVJBTV9DQVNFX1RZUEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5pZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlKSB7XG4gICAgICBxdWVyeVBhcmFtc1t0aGlzLlBBUkFNX0NBU0VfU1RBVEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUuaWQ7XG4gICAgfVxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVR5cGUoY2FzZVR5cGVzOiBDYXNlVHlwZUxpdGVbXSkge1xuICAgIGlmIChjYXNlVHlwZXMgJiYgY2FzZVR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSBjYXNlVHlwZXNbMF07XG4gICAgICBjb25zdCBjYXNlVHlwZSA9IHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoQ0FTRV9UWVBFX0xPQ19TVE9SQUdFKTtcbiAgICAgIGlmIChjYXNlVHlwZSkge1xuICAgICAgICBjb25zdCBjYXNlVHlwZU9iamVjdCA9IEpTT04ucGFyc2UoY2FzZVR5cGUpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjYXNlVHlwZXMuZmlsdGVyKGMgPT4gYy5pZCA9PT0gY2FzZVR5cGVPYmplY3QuaWQpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gcmVzdWx0WzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSBjYXNlVHlwZXNbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSBjYXNlVHlwZXNbMF07XG4gICAgICB9XG4gICAgICB0aGlzLm9uQ2FzZVR5cGVJZENoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNUb1RvcCgpIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgICBjb25zdCB0b3BDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdC1oZWFkaW5nX190ZXh0Jyk7XG4gICAgaWYgKHRvcENvbnRhaW5lcikge1xuICAgICAgdG9wQ29udGFpbmVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaElucHV0cykge1xuICAgICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5zZWFyY2hJbnB1dHMubWFwKGl0ZW0gPT4gRmllbGRzVXRpbHMuY29udmVydFRvQ2FzZUZpZWxkKGl0ZW0uZmllbGQpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxoMiBjbGFzcz1cImhlYWRpbmctaDJcIiBhcmlhLWxhYmVsPVwiRmlsdGVyc1wiPnt7J0ZpbHRlcnMnIHwgcnB4VHJhbnNsYXRlfX08L2gyPlxuPGZvcm0gY2xhc3M9XCJnbG9iYWwtZGlzcGxheVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTNweDtcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicy1qdXJpc2RpY3Rpb25cIj57eydKdXJpc2RpY3Rpb24nIHwgcnB4VHJhbnNsYXRlfX0qPC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTQgY2NkLWRyb3Bkb3duXCIgaWQ9XCJzLWp1cmlzZGljdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwianVyaXNkaWN0aW9uXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5qdXJpc2RpY3Rpb25cIiBhcmlhLWNvbnRyb2xzPVwic2VhcmNoLXJlc3VsdFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKVwiPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaiBvZiBqdXJpc2RpY3Rpb25zXCIgW25nVmFsdWVdPVwialwiPnt7ai5uYW1lIHwgcnB4VHJhbnNsYXRlfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicy1jYXNlLXR5cGVcIj57eydDYXNlIHR5cGUqJyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8c2VsZWN0IFtkaXNhYmxlZF09XCJpc0p1cmlzZGljdGlvblNlbGVjdGVkKClcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiXG4gICAgICAgICAgICBpZD1cInMtY2FzZS10eXBlXCIgbmFtZT1cImNhc2UtdHlwZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuY2FzZVR5cGVcIiBhcmlhLWNvbnRyb2xzPVwic2VhcmNoLXJlc3VsdFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2FzZVR5cGVJZENoYW5nZSgpXCI+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjdCBvZiBzZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlc1wiIFtuZ1ZhbHVlXT1cImN0XCI+e3tjdC5uYW1lIHwgcnB4VHJhbnNsYXRlfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciBjY2RDb25kaXRpb25hbFNob3dGb3JtICpuZ0lmPVwiaXNTZWFyY2hhYmxlQW5kU2VhcmNoSW5wdXRzUmVhZHkoKVwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgW2NvbnRleHRGaWVsZHNdPVwiY2FzZUZpZWxkc1wiPlxuICAgIDxkaXYgaWQ9XCJkeW5hbWljRmlsdGVyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgc2VhcmNoSW5wdXQgb2Ygc2VhcmNoSW5wdXRzXCI+XG4gICAgICAgIDxjY2QtZmllbGQtd3JpdGUgW2Nhc2VGaWVsZF09XCJzZWFyY2hJbnB1dC5maWVsZFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgW2lzRXhwYW5kZWRdPVwidHJ1ZVwiIChrZXl1cC5lbnRlcik9XCJhcHBseSgpXCI+PC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWlzU2VhcmNoYWJsZUFuZFNlYXJjaElucHV0c1JlYWR5KClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiYXBwbHkoKVwiIChrZXl1cC5lbnRlcik9XCJhcHBseSgpXCIgW3RpdGxlXT1cIidBcHBseSBmaWx0ZXInIHwgcnB4VHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBcHBseSBmaWx0ZXInIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAge3snQXBwbHknIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9idXR0b24+ICZuYnNwOyZuYnNwOyZuYnNwO1xuICA8YnV0dG9uIGlkPVwicmVzZXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0KClcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ1Jlc2V0IGZpbHRlcicgfCBycHhUcmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXNldCBmaWx0ZXInIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAge3snUmVzZXQnIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC1maWx0ZXJzL3NlYXJjaC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zZWFyY2gtZmlsdGVycy9zZWFyY2gtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0lDTC9ELGtDQUFzRDtJQUFBLFlBQXlCOztJQUFBLGlCQUFTOzs7SUFBaEQsOEJBQWE7SUFBQyxlQUF5QjtJQUF6QixxREFBeUI7OztJQVEvRSxrQ0FBd0U7SUFBQSxZQUEwQjs7SUFBQSxpQkFBUzs7O0lBQWxELCtCQUFjO0lBQUMsZUFBMEI7SUFBMUIsc0RBQTBCOzs7O0lBTWxHLDhCQUFpRTtJQUMvRCwyQ0FB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OztRQXBDcUMsZUFBNEI7UUFBNUIsc0RBQTRCO1FBR3JCLGVBQWtDO1FBQWxDLHFFQUFrQztRQUVyRCxlQUFtQztRQUFuQyxtREFBbUM7UUFFdkMsZUFBZ0I7UUFBaEIsMkNBQWdCO1FBSUksZUFBK0I7UUFBL0IsMERBQStCO1FBQ25FLGVBQXFDO1FBQXJDLHVEQUFxQyxrQ0FBQTtRQUdwQixlQUFnQztRQUFoQywyREFBZ0M7UUFJckIsZUFBd0M7UUFBeEMsNkRBQXdDO1FBU3RFLGVBQWdEO1FBQWhELGtFQUFnRCxpREFBQTtRQUNoRCxvRUFBaUQ7UUFDdkQsZUFDRjtRQURFLGdFQUNGO1FBRVEsZUFBdUM7UUFBdkMsOERBQXVDO1FBQUMsb0VBQWlEO1FBQy9GLGVBQ0Y7UUFERSxnRUFDRjs7dUZEWFcsc0JBQXNCO2NBTGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixXQUFXLEVBQUUsaUNBQWlDO2FBQy9DO3lKQVNRLGFBQWE7a0JBRG5CLEtBQUs7WUFJQyxTQUFTO2tCQURmLEtBQUs7WUFJQyxPQUFPO2tCQURiLE1BQU07WUFJQSxPQUFPO2tCQURiLE1BQU07WUFJQSxjQUFjO2tCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IENhc2VTdGF0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2Utc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZVR5cGVMaXRlIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS10eXBlLWxpdGUubW9kZWwnO1xuaW1wb3J0IHsgSnVyaXNkaWN0aW9uIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vanVyaXNkaWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvanVyaXNkaWN0aW9uL2p1cmlzZGljdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyL29yZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2luZG93L3dpbmRvdy5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnLi9kb21haW4vc2VhcmNoLWlucHV0Lm1vZGVsJztcblxuY29uc3QgSlVSSVNESUNUSU9OX0xPQ19TVE9SQUdFID0gJ3NlYXJjaC1qdXJpc2RpY3Rpb24nO1xuY29uc3QgTUVUQV9GSUVMRFNfTE9DX1NUT1JBR0UgPSAnc2VhcmNoLW1ldGFkYXRhLWZpZWxkcyc7XG5jb25zdCBGT1JNX0dST1VQX1ZBTFVFX0xPQ19TVE9SQUdFID0gJ3NlYXJjaC1mb3JtLWdyb3VwLXZhbHVlJztcbmNvbnN0IENBU0VfVFlQRV9MT0NfU1RPUkFHRSA9ICdzZWFyY2gtY2FzZVR5cGUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXNlYXJjaC1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5cbmV4cG9ydCBjbGFzcyBTZWFyY2hGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlYWRvbmx5IFBBUkFNX0pVUklTRElDVElPTiA9ICdqdXJpc2RpY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgUEFSQU1fQ0FTRV9UWVBFID0gJ2Nhc2UtdHlwZSc7XG4gIHB1YmxpYyByZWFkb25seSBQQVJBTV9DQVNFX1NUQVRFID0gJ2Nhc2Utc3RhdGUnO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGp1cmlzZGljdGlvbnM6IEp1cmlzZGljdGlvbltdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvQXBwbHk6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkFwcGx5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uUmVzZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25KdXJpc2RpY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBzZWFyY2hJbnB1dHM6IFNlYXJjaElucHV0W107XG4gIHB1YmxpYyBzZWFyY2hJbnB1dHNSZWFkeTogYm9vbGVhbjtcblxuICBwdWJsaWMgc2VsZWN0ZWQ6IHtcbiAgICBqdXJpc2RpY3Rpb24/OiBKdXJpc2RpY3Rpb24sXG4gICAgY2FzZVR5cGU/OiBDYXNlVHlwZUxpdGUsXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwLFxuICAgIGNhc2VTdGF0ZT86IENhc2VTdGF0ZSxcbiAgICBwYWdlPzogbnVtYmVyLFxuICAgIG1ldGFkYXRhRmllbGRzPzogc3RyaW5nW11cbiAgfTtcblxuICBwdWJsaWMgc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXM/OiBDYXNlVHlwZUxpdGVbXTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGp1cmlzZGljdGlvblNlcnZpY2U6IEp1cmlzZGljdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xuICAgIGNvbnN0IGp1cmlzZGljdGlvbiA9IHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoSlVSSVNESUNUSU9OX0xPQ19TVE9SQUdFKTtcbiAgICBpZiAodGhpcy5qdXJpc2RpY3Rpb25zLmxlbmd0aCA9PT0gMSB8fCBqdXJpc2RpY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gdGhpcy5qdXJpc2RpY3Rpb25zWzBdO1xuICAgICAgaWYgKGp1cmlzZGljdGlvbikge1xuICAgICAgICBjb25zdCBsb2NhbFN0b3JhZ2VKdXJpc2RpY3Rpb24gPSBKU09OLnBhcnNlKGp1cmlzZGljdGlvbik7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gdGhpcy5qdXJpc2RpY3Rpb25zLmZpbHRlcihqID0+IGouaWQgPT09IGxvY2FsU3RvcmFnZUp1cmlzZGljdGlvbi5pZClbMF07XG4gICAgICB9XG4gICAgICB0aGlzLm9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUdyb3VwO1xuICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IDE7XG4gICAgdGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcyA9IHRoaXMuZ2V0TWV0YWRhdGFGaWVsZHMoKTtcbiAgICB0aGlzLm9uQXBwbHkuZW1pdCh7XG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLmdldFF1ZXJ5UGFyYW1zKClcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxVRV9MT0NfU1RPUkFHRSk7XG4gICAgdGhpcy53aW5kb3dTZXJ2aWNlLnJlbW92ZUxvY2FsU3RvcmFnZShDQVNFX1RZUEVfTE9DX1NUT1JBR0UpO1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoSlVSSVNESUNUSU9OX0xPQ19TVE9SQUdFKTtcbiAgICB0aGlzLndpbmRvd1NlcnZpY2UucmVtb3ZlTG9jYWxTdG9yYWdlKE1FVEFfRklFTERTX0xPQ19TVE9SQUdFKTtcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XG4gICAgaWYgKHRoaXMuanVyaXNkaWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gdGhpcy5qdXJpc2RpY3Rpb25zWzBdO1xuICAgICAgdGhpcy5vbkp1cmlzZGljdGlvbklkQ2hhbmdlKCk7XG4gICAgfVxuICAgIHRoaXMub25SZXNldC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZC5mb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cDtcbiAgICB0aGlzLnNlbGVjdGVkLnBhZ2UgPSAxO1xuICAgIHRoaXMuc2VsZWN0ZWQubWV0YWRhdGFGaWVsZHMgPSB0aGlzLmdldE1ldGFkYXRhRmllbGRzKCk7XG4gICAgdGhpcy5wb3B1bGF0ZVZhbHVlc0luTG9jYWxTdG9yYWdlKCk7XG4gICAgdGhpcy5vbkFwcGx5LmVtaXQoe1xuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICBxdWVyeVBhcmFtczogdGhpcy5nZXRRdWVyeVBhcmFtcygpXG4gICAgfSk7XG4gICAgdGhpcy5zZXRGb2N1c1RvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgcG9wdWxhdGVWYWx1ZXNJbkxvY2FsU3RvcmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMVUVfTE9DX1NUT1JBR0UsXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cC52YWx1ZSkpO1xuICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoTUVUQV9GSUVMRFNfTE9DX1NUT1JBR0UsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWQubWV0YWRhdGFGaWVsZHMpKTtcbiAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKEpVUklTRElDVElPTl9MT0NfU1RPUkFHRSwgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24pKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkge1xuICAgICAgdGhpcy53aW5kb3dTZXJ2aWNlLnNldExvY2FsU3RvcmFnZShDQVNFX1RZUEVfTE9DX1NUT1JBR0UsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TWV0YWRhdGFGaWVsZHMoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLnNlYXJjaElucHV0cykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoSW5wdXRzXG4gICAgICAgIC5maWx0ZXIoc2VhcmNoSW5wdXQgPT4gc2VhcmNoSW5wdXQuZmllbGQubWV0YWRhdGEgPT09IHRydWUpXG4gICAgICAgIC5tYXAoc2VhcmNoSW5wdXQgPT4gc2VhcmNoSW5wdXQuZmllbGQuaWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1NlYXJjaGFibGUoKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcbiAgICByZXN1bHQgPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICE9PSBudWxsO1xuICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSAhPT0gbnVsbDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGlzU2VhcmNoYWJsZUFuZFNlYXJjaElucHV0c1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU2VhcmNoYWJsZSgpICYmIHRoaXMuc2VhcmNoSW5wdXRzUmVhZHk7XG4gIH1cblxuICBwdWJsaWMgb25KdXJpc2RpY3Rpb25JZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gbnVsbDtcbiAgICB0aGlzLmp1cmlzZGljdGlvblNlcnZpY2UuYW5ub3VuY2VTZWxlY3RlZEp1cmlzZGljdGlvbih0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbik7XG4gICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcztcbiAgICB0aGlzLnNlbGVjdENhc2VUeXBlKHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMpO1xuICAgIHRoaXMub25KdXJpc2RpY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbik7XG4gIH1cblxuICBwdWJsaWMgb25DYXNlVHlwZUlkQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5zZWFyY2hJbnB1dHNSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoSW5wdXRzID0gW107XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaElucHV0cyhcbiAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5pZFxuICAgICkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnNlYXJjaElucHV0c1JlYWR5ID0gdHJ1ZSlcbiAgICApLnN1YnNjcmliZShzZWFyY2hJbnB1dHMgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0cyA9IHNlYXJjaElucHV0cy5zb3J0KHRoaXMub3JkZXJTZXJ2aWNlLnNvcnRBc2MpO1xuXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxVRV9MT0NfU1RPUkFHRSk7XG4gICAgICAgIGxldCBmb3JtVmFsdWVPYmplY3QgPSBudWxsO1xuICAgICAgICBpZiAoZm9ybVZhbHVlKSB7XG4gICAgICAgICAgZm9ybVZhbHVlT2JqZWN0ID0gSlNPTi5wYXJzZShmb3JtVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHNlYXJjaElucHV0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmIChpdGVtLmZpZWxkLmVsZW1lbnRQYXRoKSB7XG4gICAgICAgICAgICBpdGVtLmZpZWxkLmlkID0gaXRlbS5maWVsZC5pZCArICcuJyArIGl0ZW0uZmllbGQuZWxlbWVudFBhdGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uZmllbGQubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgICAgICAgIGlmIChmb3JtVmFsdWVPYmplY3QpIHtcbiAgICAgICAgICAgIGl0ZW0uZmllbGQudmFsdWUgPSBmb3JtVmFsdWVPYmplY3RbaXRlbS5maWVsZC5pZF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTZWFyY2ggaW5wdXQgZmllbGRzIHJlcXVlc3Qgd2lsbCBiZSBkaXNjYXJkZWQgcmVhc29uOiAnLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlzSnVyaXNkaWN0aW9uU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID09PSBudWxsIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWVyeVBhcmFtcygpIHtcbiAgICAvLyBTYXZlIGZpbHRlcnMgYXMgcXVlcnkgcGFyYW1ldGVycyBmb3IgY3VycmVudCByb3V0ZVxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKSB7XG4gICAgICBxdWVyeVBhcmFtc1t0aGlzLlBBUkFNX0pVUklTRElDVElPTl0gPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5pZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW3RoaXMuUEFSQU1fQ0FTRV9UWVBFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuaWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSkge1xuICAgICAgcXVlcnlQYXJhbXNbdGhpcy5QQVJBTV9DQVNFX1NUQVRFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlLmlkO1xuICAgIH1cbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdENhc2VUeXBlKGNhc2VUeXBlczogQ2FzZVR5cGVMaXRlW10pIHtcbiAgICBpZiAoY2FzZVR5cGVzICYmIGNhc2VUeXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gY2FzZVR5cGVzWzBdO1xuICAgICAgY29uc3QgY2FzZVR5cGUgPSB0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKENBU0VfVFlQRV9MT0NfU1RPUkFHRSk7XG4gICAgICBpZiAoY2FzZVR5cGUpIHtcbiAgICAgICAgY29uc3QgY2FzZVR5cGVPYmplY3QgPSBKU09OLnBhcnNlKGNhc2VUeXBlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FzZVR5cGVzLmZpbHRlcihjID0+IGMuaWQgPT09IGNhc2VUeXBlT2JqZWN0LmlkKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHJlc3VsdFswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gY2FzZVR5cGVzWzBdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gY2FzZVR5cGVzWzBdO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNhc2VUeXBlSWRDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzVG9Ub3AoKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG4gICAgY29uc3QgdG9wQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHQtaGVhZGluZ19fdGV4dCcpO1xuICAgIGlmICh0b3BDb250YWluZXIpIHtcbiAgICAgIHRvcENvbnRhaW5lci5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dHMpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuc2VhcmNoSW5wdXRzLm1hcChpdGVtID0+IEZpZWxkc1V0aWxzLmNvbnZlcnRUb0Nhc2VGaWVsZChpdGVtLmZpZWxkKSk7XG4gICAgfVxuICB9XG59XG4iLCI8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCIgYXJpYS1sYWJlbD1cIkZpbHRlcnNcIj57eydGaWx0ZXJzJyB8IHJweFRyYW5zbGF0ZX19PC9oMj5cbjxmb3JtIGNsYXNzPVwiZ2xvYmFsLWRpc3BsYXlcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEzcHg7XCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInMtanVyaXNkaWN0aW9uXCI+e3snSnVyaXNkaWN0aW9uJyB8IHJweFRyYW5zbGF0ZX19KjwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiIGlkPVwicy1qdXJpc2RpY3Rpb25cIlxuICAgICAgICAgICAgbmFtZT1cImp1cmlzZGljdGlvblwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuanVyaXNkaWN0aW9uXCIgYXJpYS1jb250cm9scz1cInNlYXJjaC1yZXN1bHRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkp1cmlzZGljdGlvbklkQ2hhbmdlKClcIj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGogb2YganVyaXNkaWN0aW9uc1wiIFtuZ1ZhbHVlXT1cImpcIj57e2oubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJzLWNhc2UtdHlwZVwiPnt7J0Nhc2UgdHlwZSonIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxzZWxlY3QgW2Rpc2FibGVkXT1cImlzSnVyaXNkaWN0aW9uU2VsZWN0ZWQoKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTQgY2NkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgIGlkPVwicy1jYXNlLXR5cGVcIiBuYW1lPVwiY2FzZS10eXBlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5jYXNlVHlwZVwiIGFyaWEtY29udHJvbHM9XCJzZWFyY2gtcmVzdWx0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DYXNlVHlwZUlkQ2hhbmdlKClcIj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGN0IG9mIHNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzXCIgW25nVmFsdWVdPVwiY3RcIj57e2N0Lm5hbWUgfCBycHhUcmFuc2xhdGV9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyIGNjZENvbmRpdGlvbmFsU2hvd0Zvcm0gKm5nSWY9XCJpc1NlYXJjaGFibGVBbmRTZWFyY2hJbnB1dHNSZWFkeSgpXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCI+XG4gICAgPGRpdiBpZD1cImR5bmFtaWNGaWx0ZXJzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCBzZWFyY2hJbnB1dCBvZiBzZWFyY2hJbnB1dHNcIj5cbiAgICAgICAgPGNjZC1maWVsZC13cml0ZSBbY2FzZUZpZWxkXT1cInNlYXJjaElucHV0LmZpZWxkXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbaXNFeHBhbmRlZF09XCJ0cnVlXCIgKGtleXVwLmVudGVyKT1cImFwcGx5KClcIj5cbiAgICAgICAgPC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWlzU2VhcmNoYWJsZUFuZFNlYXJjaElucHV0c1JlYWR5KClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiYXBwbHkoKVwiIChrZXl1cC5lbnRlcik9XCJhcHBseSgpXCIgW3RpdGxlXT1cIidBcHBseSBmaWx0ZXInIHwgcnB4VHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBcHBseSBmaWx0ZXInIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAge3snQXBwbHknIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9idXR0b24+ICZuYnNwOyZuYnNwOyZuYnNwO1xuICA8YnV0dG9uIGlkPVwicmVzZXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0KClcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ1Jlc2V0IGZpbHRlcicgfCBycHhUcmFuc2xhdGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXNldCBmaWx0ZXInIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAge3snUmVzZXQnIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -106,11 +106,11 @@ function SearchResultComponent_table_0_th_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
106
106
|
i0.ɵɵadvance(2);
|
|
107
107
|
i0.ɵɵproperty("checked", ctx_r6.allOnPageSelected())("disabled", !ctx_r6.canAnyBeShared());
|
|
108
108
|
} }
|
|
109
|
-
function
|
|
109
|
+
function SearchResultComponent_table_0_th_11_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
110
110
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
111
111
|
i0.ɵɵelementStart(0, "div", 27);
|
|
112
112
|
i0.ɵɵelementStart(1, "a", 28);
|
|
113
|
-
i0.ɵɵlistener("click", function
|
|
113
|
+
i0.ɵɵlistener("click", function SearchResultComponent_table_0_th_11_div_8_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r19); const col_r15 = i0.ɵɵnextContext().$implicit; const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.sort(col_r15); });
|
|
114
114
|
i0.ɵɵelementEnd();
|
|
115
115
|
i0.ɵɵelementEnd();
|
|
116
116
|
} if (rf & 2) {
|
|
@@ -123,13 +123,15 @@ function SearchResultComponent_table_0_th_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
123
123
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
124
124
|
i0.ɵɵelementStart(0, "th");
|
|
125
125
|
i0.ɵɵelementStart(1, "table", 24);
|
|
126
|
-
i0.ɵɵ
|
|
127
|
-
i0.ɵɵelementStart(3, "
|
|
128
|
-
i0.ɵɵelementStart(4, "
|
|
129
|
-
i0.ɵɵ
|
|
130
|
-
i0.ɵɵ
|
|
126
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
127
|
+
i0.ɵɵelementStart(3, "tr");
|
|
128
|
+
i0.ɵɵelementStart(4, "th");
|
|
129
|
+
i0.ɵɵelementStart(5, "div", 25);
|
|
130
|
+
i0.ɵɵlistener("click", function SearchResultComponent_table_0_th_11_Template_div_click_5_listener() { i0.ɵɵrestoreView(_r22); const col_r15 = ctx.$implicit; const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.sort(col_r15); });
|
|
131
|
+
i0.ɵɵtext(6);
|
|
132
|
+
i0.ɵɵpipe(7, "rpxTranslate");
|
|
131
133
|
i0.ɵɵelementEnd();
|
|
132
|
-
i0.ɵɵtemplate(
|
|
134
|
+
i0.ɵɵtemplate(8, SearchResultComponent_table_0_th_11_div_8_Template, 2, 1, "div", 26);
|
|
133
135
|
i0.ɵɵelementEnd();
|
|
134
136
|
i0.ɵɵelementEnd();
|
|
135
137
|
i0.ɵɵelementEnd();
|
|
@@ -138,10 +140,10 @@ function SearchResultComponent_table_0_th_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
138
140
|
const col_r15 = ctx.$implicit;
|
|
139
141
|
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
140
142
|
i0.ɵɵadvance(1);
|
|
141
|
-
i0.ɵɵattribute("aria-label", "Sort by " + col_r15.label + " " + ctx_r7.isSortAscending(col_r15) ? "ascending" : "descending");
|
|
142
|
-
i0.ɵɵadvance(
|
|
143
|
-
i0.ɵɵ
|
|
144
|
-
i0.ɵɵadvance(
|
|
143
|
+
i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 3, "Sort by " + col_r15.label + " " + ctx_r7.isSortAscending(col_r15) ? "ascending" : "descending"));
|
|
144
|
+
i0.ɵɵadvance(5);
|
|
145
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 5, col_r15.label), " ");
|
|
146
|
+
i0.ɵɵadvance(2);
|
|
145
147
|
i0.ɵɵproperty("ngIf", ctx_r7.comparator(col_r15));
|
|
146
148
|
} }
|
|
147
149
|
function SearchResultComponent_table_0_th_12_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -412,7 +414,7 @@ function SearchResultComponent_table_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
412
414
|
i0.ɵɵelementStart(8, "thead");
|
|
413
415
|
i0.ɵɵelementStart(9, "tr", 7);
|
|
414
416
|
i0.ɵɵtemplate(10, SearchResultComponent_table_0_th_10_Template, 4, 2, "th", 8);
|
|
415
|
-
i0.ɵɵtemplate(11, SearchResultComponent_table_0_th_11_Template,
|
|
417
|
+
i0.ɵɵtemplate(11, SearchResultComponent_table_0_th_11_Template, 9, 7, "th", 9);
|
|
416
418
|
i0.ɵɵtemplate(12, SearchResultComponent_table_0_th_12_Template, 1, 0, "th", 10);
|
|
417
419
|
i0.ɵɵelementEnd();
|
|
418
420
|
i0.ɵɵelementEnd();
|
|
@@ -424,7 +426,7 @@ function SearchResultComponent_table_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
424
426
|
} if (rf & 2) {
|
|
425
427
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
426
428
|
i0.ɵɵadvance(3);
|
|
427
|
-
i0.ɵɵtextInterpolate(ctx_r0.caseState ? "Your cases" :
|
|
429
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 9, ctx_r0.caseState ? "Your cases" : "Search result"));
|
|
428
430
|
i0.ɵɵadvance(2);
|
|
429
431
|
i0.ɵɵproperty("ngIf", ctx_r0.paginationLimitEnforced);
|
|
430
432
|
i0.ɵɵadvance(1);
|
|
@@ -849,4 +851,4 @@ SearchResultComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SearchResultCompone
|
|
|
849
851
|
}], sortHandler: [{
|
|
850
852
|
type: Output
|
|
851
853
|
}] }); })();
|
|
852
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLXJlc3VsdC9zZWFyY2gtcmVzdWx0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zZWFyY2gtcmVzdWx0L3NlYXJjaC1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUNsRCxZQUFZLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUNWLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLHFDQUFxQyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7SUNKM0gsK0JBQXlGO0lBQ3ZGLGdDQUEwRDtJQUFBLGlCQUFDO0lBQUEsaUJBQU87SUFDbEUsa0NBQXlDO0lBQ3ZDLGdDQUE0QztJQUFBLFlBQTRCOztJQUFBLGlCQUFPO0lBQy9FLFlBQ0Y7Ozs7SUFBQSxpQkFBUztJQUNYLGlCQUFNOzs7SUFIMEMsZUFBNEI7SUFBNUIscURBQTRCO0lBQ3hFLGVBQ0Y7SUFERSxnUUFDRjs7O0lBR0YsK0JBQ2tHOztJQUNoRyxnQ0FBdUQ7SUFBQSxZQUNyRDs7SUFBQSxnQ0FBdUM7SUFBQSxZQUFzQjtJQUFBLGlCQUFPO0lBQ3BFLFlBQ0E7O0lBQUEsZ0NBQXVDO0lBQUEsYUFBcUI7SUFBQSxpQkFBTztJQUNuRSxhQUNBOztJQUFBLGlDQUF1QztJQUFBLGFBQXVCO0lBQUEsaUJBQU87SUFBQyxhQUE0Qjs7SUFBQSxpQkFBTztJQUM3RyxpQkFBTTs7O0lBUEoseUdBQWlGO0lBQzFCLGVBQ3JEO0lBRHFELGdFQUNyRDtJQUF1QyxlQUFzQjtJQUF0Qiw2Q0FBc0I7SUFDN0QsZUFDQTtJQURBLDREQUNBO0lBQXVDLGVBQXFCO0lBQXJCLDRDQUFxQjtJQUM1RCxlQUNBO0lBREEsNkRBQ0E7SUFBdUMsZUFBdUI7SUFBdkIsOENBQXVCO0lBQVEsZUFBNEI7SUFBNUIsaUVBQTRCOzs7O0lBRXRHLCtCQUNxRDs7SUFDbkQsNEJBQU07SUFBQSw2QkFBeUY7SUFBM0Isb01BQTBCO0lBQUMsWUFBeUM7O0lBQUEsaUJBQUk7SUFBQSxpQkFBTztJQUNySixpQkFBTTs7SUFGTixxRUFBb0Q7SUFDNkMsZUFBeUM7SUFBekMsa0VBQXlDOzs7O0lBS3hJLDhCQUF1RTtJQUNyRSwrQkFBb0M7SUFDbEMsaUNBQWlMO0lBQXhGLHFNQUFzQjtJQUEvRyxpQkFBaUw7SUFDakwsNEJBQ1E7SUFDVixpQkFBTTtJQUNSLGlCQUFLOzs7SUFKK0csZUFBK0I7SUFBL0Isb0RBQStCLHNDQUFBOzs7O0lBVzNJLCtCQUErRDtJQUM3RCw2QkFBbUc7SUFBaEcscVBBQW1CO0lBQTZFLGlCQUFJO0lBQ3pHLGlCQUFNOzs7O0lBRHVDLGVBQTZCO0lBQTdCLDBFQUE2Qjs7OztJQVBsRiwwQkFBMkM7SUFDekMsaUNBQ3NHO0lBQ3BHLDBCQUFJO0lBQ0YsMEJBQUk7SUFDRiwrQkFBNEQ7SUFBcEIsa09BQW1CO0lBQUMsWUFBYTtJQUFBLGlCQUFNO0lBQy9FLHFGQUVNO0lBQ1IsaUJBQUs7SUFDUCxpQkFBSztJQUNQLGlCQUFRO0lBQ1YsaUJBQUs7Ozs7SUFWRCxlQUFtRztJQUFuRyw2SEFBbUc7SUFHbkMsZUFBYTtJQUFiLG1DQUFhO0lBQ25FLGVBQXFCO0lBQXJCLGlEQUFxQjs7O0lBT25DLHlCQUF5RDs7OztJQVF2RCw4QkFBdUU7SUFDckUsK0JBQW9DO0lBQ2xDLGlDQUN3SDtJQUF0RywwUkFBa0M7SUFEcEQsaUJBQ3dIO0lBQ3hILDRCQUNRO0lBQ1YsaUJBQU07SUFDUixpQkFBSzs7OztJQUxzQyxlQUFnQztJQUFoQyxrRUFBZ0M7SUFBQyxvRUFBa0M7SUFDckQsd0RBQThCLDhDQUFBO0lBQ2hDLGVBQWlDO0lBQWpDLG1FQUFpQzs7OztJQVFsRixxQ0FHb0U7Ozs7O0lBRmhDLCtHQUE2RSxrREFBQSxvREFBQTs7O0lBR3BGLFlBQXFDOzs7O0lBQXJDLDhEQUFxQzs7O0lBTHBFLGlDQUFnRDtJQUM5QyxrSkFHb0U7SUFDcEUsNktBQWdGO0lBQ2xGLDBCQUFlOzs7Ozs7SUFMSSxlQUFxQztJQUFyQyxvRUFBcUMsa0JBQUE7OztJQUgxRCw2QkFDOEc7O0lBQzVHLCtIQU1lO0lBQ2pCLGlCQUFJOzs7O0lBUkYseUhBQXdGO0lBRGpFLDJFQUFpRDtJQUV6QyxlQUFlO0lBQWYsd0NBQWU7OztJQVFoRCwrQkFBZ0c7SUFDOUYscUNBR29FO0lBQ3RFLGlCQUFNOzs7OztJQUxxQyxxRUFBb0Q7SUFFN0UsZUFBK0M7SUFBL0MscUVBQStDLGtEQUFBLG9EQUFBOzs7SUFibkUsOEJBQStHO0lBQzdHLHFHQVNJO0lBQ0oseUdBS007SUFDUixpQkFBSzs7O0lBaEJDLGVBQW1CO0lBQW5CLHdDQUFtQjtJQVVqQixlQUFtQjtJQUFuQix3Q0FBbUI7OztJQU8zQiwwQkFBOEI7SUFDNUIsMkJBQTBEO0lBQ3hELG1DQUE0RTtJQUM5RSxpQkFBTTtJQUNSLGlCQUFLOzs7O0lBSEUsZUFBb0Q7SUFBcEQscUVBQW9EO0lBQ3pDLGVBQXlCO0lBQXpCLDJDQUF5Qiw2QkFBQTs7O0lBN0I3QywwQkFBb0o7SUFDbEosaUdBT0s7SUFDTCxrR0FpQks7SUFDTCxpR0FJSztJQUNQLGlCQUFLOzs7SUEvQkUsZUFBc0I7SUFBdEIsK0NBQXNCO0lBUTJCLGVBQXVCO0lBQXZCLG9EQUF1QjtJQWtCeEUsZUFBdUI7SUFBdkIsZ0RBQXVCOzs7O0lBNUJoQyw2QkFBNkM7SUFDM0MsNEZBZ0NLOztJQUNQLDBCQUFlOzs7SUFqQ1UsZUFBMkg7SUFBM0gsMEtBQTJIOzs7O0lBcUNoSiw4QkFBdUU7SUFDckUsK0JBQW9DO0lBQ2xDLGlDQUMwSjtJQUF4SSwwUkFBa0MsaVJBQUE7SUFEcEQsaUJBQzBKO0lBQzFKLDRCQUNRO0lBQ1YsaUJBQU07SUFDUixpQkFBSzs7OztJQUxzQyxlQUFnQztJQUFoQyxrRUFBZ0M7SUFBQyxvRUFBa0M7SUFDckQsd0RBQThCLDhDQUFBO0lBQ2hDLGVBQWlDO0lBQWpDLG1FQUFpQzs7O0lBU2xGLHFDQUdvRTs7Ozs7SUFGaEMsK0dBQTZFLGtEQUFBLG9EQUFBOzs7SUFHcEYsWUFBcUM7Ozs7SUFBckMsOERBQXFDOzs7SUFMcEUsaUNBQWdEO0lBQzlDLGtKQUdvRTtJQUNwRSw2S0FBZ0Y7SUFDbEYsMEJBQWU7Ozs7OztJQUxJLGVBQXFDO0lBQXJDLG9FQUFxQyxrQkFBQTs7O0lBSDFELDZCQUM4Rzs7SUFDNUcsK0hBTWU7SUFDakIsaUJBQUk7Ozs7SUFSRix5SEFBd0Y7SUFEakUsMkVBQWlEO0lBRXpDLGVBQWU7SUFBZix3Q0FBZTs7O0lBUWhELCtCQUFnRztJQUM5RixxQ0FHb0U7SUFDdEUsaUJBQU07Ozs7O0lBTHFDLHFFQUFvRDtJQUU3RSxlQUErQztJQUEvQyxxRUFBK0Msa0RBQUEsb0RBQUE7OztJQWRuRSw4QkFBK0c7SUFFN0cscUdBU0k7SUFDSix5R0FLTTtJQUNSLGlCQUFLOzs7SUFoQkMsZUFBbUI7SUFBbkIsd0NBQW1CO0lBVWpCLGVBQW1CO0lBQW5CLHdDQUFtQjs7O0lBTzNCLDBCQUE4QjtJQUM1QiwyQkFBMEQ7SUFDeEQsbUNBQTRFO0lBQzlFLGlCQUFNO0lBQ1IsaUJBQUs7Ozs7SUFIRSxlQUFvRDtJQUFwRCxxRUFBb0Q7SUFDekMsZUFBeUI7SUFBekIsMkNBQXlCLDZCQUFBOzs7SUE5QjdDLDBCQUEyTDtJQUN6TCxpR0FPSztJQUNMLGtHQWtCSztJQUNMLGlHQUlLO0lBQ1AsaUJBQUs7OztJQWhDRSxlQUFzQjtJQUF0QiwrQ0FBc0I7SUFRMkIsZUFBdUI7SUFBdkIsb0RBQXVCO0lBbUJ4RSxlQUF1QjtJQUF2QixnREFBdUI7OztJQTdCaEMsNkJBQThDO0lBQzVDLDRGQWlDSzs7O0lBQ1AsMEJBQWU7OztJQWxDVSxlQUFrSztJQUFsSyw0TkFBa0s7OztJQTNGL0wsNkJBQTJDO0lBQ3pDLCtCQUFTO0lBQ1AsNkJBQXNFO0lBQUEsWUFBOEQ7O0lBQUEsaUJBQUs7SUFFekksZ0ZBTU07SUFFTixnRkFRTTtJQUNOLDhFQUdNO0lBQ1IsaUJBQVU7SUFDViw2QkFBTztJQUNMLDZCQUFnQjtJQUNkLDhFQU1LO0lBQ0wsOEVBWUs7SUFDTCwrRUFBeUQ7SUFDM0QsaUJBQUs7SUFDUCxpQkFBUTtJQUNSLDhCQUFPO0lBR0wsa0dBa0NlO0lBRWYsbUdBbUNlO0lBRWpCLGlCQUFRO0lBQ1YsaUJBQVE7OztJQTlIa0UsZUFBOEQ7SUFBOUQsNkZBQThEO0lBRTFFLGVBQTZCO0lBQTdCLHFEQUE2QjtJQVFqRixlQUFtQztJQUFuQyxnRUFBbUM7SUFTbkMsZUFBdUQ7SUFBdkQsNkZBQXVEO0lBT3RELGVBQXNCO0lBQXRCLDhDQUFzQjtJQU9QLGVBQXFCO0lBQXJCLG1EQUFxQjtJQWFwQyxlQUF1QjtJQUF2QiwrQ0FBdUI7SUFNZixlQUE0QjtJQUE1QixvREFBNEI7SUFvQzVCLGVBQTZCO0lBQTdCLHFEQUE2Qjs7OztJQXdDaEQsMENBUWlEO0lBTi9DLG1PQUErQjtJQU1nQixpQkFBaUI7OztJQUxoRSx3RUFBbUQsa0JBQUEsY0FBQSw2Q0FBQSxzQ0FBQSw4Q0FBQTs7O0lBT3JELCtCQUN3Rjs7SUFDeEYsWUFDQTs7SUFBQSxpQkFBTTs7SUFGTix3R0FBdUY7SUFDdkYsZUFDQTtJQURBLHVHQUNBOztBRGhJQSxNQUFNLE9BQU8scUJBQXFCO0lBcUZoQyxZQUNFLHFDQUE0RSxFQUM1RSxTQUE0QixFQUNYLGVBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsY0FBOEIsRUFDOUIscUJBQTRDO1FBSjVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUF0RjlDLCtCQUEwQixHQUFHLEtBQUssQ0FBQztRQUU3QyxTQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQThCeEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUd6QixxQkFBZ0IsR0FBMkIsRUFBRSxDQUFDO1FBRzlDLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUcvQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFHdkQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR25ELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdsRCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBELDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQU1oQyxhQUFRLEdBUVgsRUFBRSxDQUFDO1FBTUEsMkJBQXNCLEdBQXVELEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV2SCxrQkFBYSxHQUEyQixFQUFFLENBQUM7UUFXaEQsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLHFDQUFxQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLEtBQUssTUFBTSxlQUFlLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNuRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN0RyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDMUM7YUFDRjtTQUNGO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUV2QyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUV0QixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztZQUNoQyw4REFBOEQ7WUFDOUQsSUFBSSxDQUFDLFVBQVUsR0FBRztnQkFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO2FBQ3JDLENBQUM7WUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUF5QixFQUFFLENBQXlCLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNoRjtRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUM7UUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDO1FBQ3RFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQztRQUVwRCxPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUE4QjtRQUMvQyxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLGNBQWM7UUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNoRCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUM1QiwyREFBMkQ7WUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7d0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxDQUF1QjtRQUM1QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO29CQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1QjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVLENBQUMsQ0FBdUI7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUMvQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkIsZ0JBQWdCLEVBQUcsQ0FBQzthQUNyQjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILHlFQUF5RTtJQUNsRSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUV0QixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBRWhELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRTFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRSxFQUFFO29CQUM3QyxFQUFFLEVBQUUsT0FBTztvQkFDWCxLQUFLLEVBQUUsSUFBSTtvQkFDWCxVQUFVLEVBQUUsRUFBRTtvQkFDZCxLQUFLLEVBQUUsS0FBSztvQkFDWixlQUFlLEVBQUUsSUFBSTtpQkFDdEIsQ0FBQyxDQUFDLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUM7WUFDekMsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFFcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFJO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLGdCQUFnQjtRQUNoQixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdkIsV0FBVyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFILFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDL0csV0FBVyxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixXQUFXO1NBQ1osQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLFFBQVEsQ0FBQyxhQUFhLFlBQVksV0FBVyxFQUFFO2dCQUNqRCxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQy9CO1lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVNLGNBQWMsQ0FBQyxHQUEyQixFQUFFLE1BQTRCO1FBQzdFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ3BDLEVBQUUsRUFBRSxHQUFHLENBQUMsYUFBYTtZQUNyQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxlQUFlO1lBQy9CLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDNUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtZQUN4RCxlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7U0FDckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEdBQWMsRUFBRSxNQUE0QjtRQUN0RSxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkYsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztJQUNyRixDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQThCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLHFDQUFxQyxDQUFDLG9DQUFvQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSxJQUFJLENBQUMsTUFBOEI7UUFDeEMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQzthQUMxRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM1RCxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3JCLFNBQVMsQ0FBQyxVQUFVLENBQUM7YUFDMUQ7WUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDMUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUMvRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDekMsT0FBTzthQUNSO2lCQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN4RjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pGO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQThCO1FBQzlDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDN0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQzlFLFNBQVMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0wsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDMUM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0MsQ0FBQztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sNkJBQTZCLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDOUMsSUFBSSxHQUFHLENBQUMsYUFBYSxLQUFLLGtCQUFrQixFQUFFO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1NBQ2hGO2FBQU07WUFDTCxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLGtCQUFrQixFQUFFO29CQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDckU7cUJBQU07b0JBQ0wsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDakMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFTSxlQUFlLENBQUMsTUFBOEI7UUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkQsT0FBTyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDOUYsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQThCO1FBRXJELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7U0FDM0I7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRyxZQUFZLEdBQUcsWUFBWSxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUM7WUFDL0MsV0FBVyxHQUFHLFdBQVcsSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pDLE1BQU07YUFDUDtTQUNGO1FBQ0QsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUN0RyxDQUFDO0lBRU0sY0FBYztRQUNuQixNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLGFBQWE7UUFDbEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7SUFFTSxlQUFlO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTdFLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUYsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE1BQWM7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ25DLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkQsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLDBCQUEwQixDQUFDLFdBQVc7UUFDNUMsT0FBTyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4RixDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDbEIsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxPQUFPLENBQUMsTUFBcUIsRUFBRSxDQUF1QjtRQUMzRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ25HLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUM7O0FBdmJzQix3Q0FBa0IsR0FBRyxjQUFjLENBQUM7QUFDcEMscUNBQWUsR0FBRyxXQUFXLENBQUM7QUFDOUIsc0NBQWdCLEdBQUcsWUFBWSxDQUFDOzBGQUo1QyxxQkFBcUI7MERBQXJCLHFCQUFxQjtRQ2ZsQyw0RUFnSVE7UUFFUiw0RkFRa0U7UUFFbEUsc0VBR007O1FBL0lFLDBEQUFpQztRQW1JdEMsZUFBa0I7UUFBbEIsdUNBQWtCO1FBU2YsZUFBb0M7UUFBcEMsNkRBQW9DOzt1RkQ3SDdCLHFCQUFxQjtjQUxqQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztnQkFDN0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7YUFDOUM7d1JBWVEsbUJBQW1CO2tCQUR6QixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsS0FBSztZQUlDLFFBQVE7a0JBRGQsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQUlDLFlBQVk7a0JBRGxCLEtBQUs7WUFJQyxVQUFVO2tCQURoQixLQUFLO1lBSUMsSUFBSTtrQkFEVixLQUFLO1lBSUMsa0JBQWtCO2tCQUR4QixLQUFLO1lBSUMsY0FBYztrQkFEcEIsS0FBSztZQUlDLGdCQUFnQjtrQkFEdEIsS0FBSztZQUlDLGdCQUFnQjtrQkFEdEIsS0FBSztZQUlDLGdCQUFnQjtrQkFEdEIsS0FBSztZQUlDLHNCQUFzQjtrQkFENUIsS0FBSztZQUlDLFNBQVM7a0JBRGYsTUFBTTtZQUlBLFVBQVU7a0JBRGhCLE1BQU07WUFJQSxTQUFTO2tCQURmLE1BQU07WUFJQSxXQUFXO2tCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHsgUGxhY2Vob2xkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDYXNlRmllbGQsIENhc2VTdGF0ZSwgQ2FzZVR5cGUsIERpc3BsYXlNb2RlLFxuICBEUkFGVF9QUkVGSVgsIEp1cmlzZGljdGlvbiwgUGFnaW5hdGlvbk1ldGFkYXRhLCBTZWFyY2hSZXN1bHRWaWV3LCBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uLFxuICBTZWFyY2hSZXN1bHRWaWV3SXRlbSwgU2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yLCBTb3J0T3JkZXIsIFNvcnRQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VSZWZlcmVuY2VQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgQWN0aXZpdHlTZXJ2aWNlLCBCcm93c2VyU2VydmljZSwgU2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeSwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtc2VhcmNoLXJlc3VsdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0pVUklTRElDVElPTiA9ICdqdXJpc2RpY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfVFlQRSA9ICdjYXNlLXR5cGUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfU1RBVEUgPSAnY2FzZS1zdGF0ZSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBQQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA9IDEwMDAwO1xuXG4gIHB1YmxpYyBJQ09OID0gRGlzcGxheU1vZGUuSUNPTjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2FzZUxpbmtVcmxUZW1wbGF0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IEp1cmlzZGljdGlvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2FzZVR5cGU6IENhc2VUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlU3RhdGU6IENhc2VTdGF0ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2FzZUZpbHRlckZHOiBGb3JtR3JvdXA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlc3VsdFZpZXc6IFNlYXJjaFJlc3VsdFZpZXc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2U6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnaW5hdGlvbk1ldGFkYXRhOiBQYWdpbmF0aW9uTWV0YWRhdGE7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1ldGFkYXRhRmllbGRzOiBzdHJpbmdbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0aW9uRW5hYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93T25seVNlbGVjdGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHByZVNlbGVjdGVkQ2FzZXM6IFNlYXJjaFJlc3VsdFZpZXdJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uc3VtZXJTb3J0aW5nRW5hYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hSZXN1bHRWaWV3SXRlbVtdPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2hhbmdlUGFnZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjbGlja0Nhc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc29ydEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBwYWdpbmF0aW9uTGltaXRFbmZvcmNlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwYWdpbmF0aW9uUGFnZVNpemU6IG51bWJlcjtcblxuICBwdWJsaWMgaGlkZVJvd3M6IGJvb2xlYW47XG5cbiAgcHVibGljIHNlbGVjdGVkOiB7XG4gICAgaW5pdD86IGJvb2xlYW4sXG4gICAganVyaXNkaWN0aW9uPzogSnVyaXNkaWN0aW9uLFxuICAgIGNhc2VUeXBlPzogQ2FzZVR5cGUsXG4gICAgY2FzZVN0YXRlPzogQ2FzZVN0YXRlLFxuICAgIGZvcm1Hcm91cD86IEZvcm1Hcm91cCxcbiAgICBtZXRhZGF0YUZpZWxkcz86IHN0cmluZ1tdLFxuICAgIHBhZ2U/OiBudW1iZXJcbiAgfSA9IHt9O1xuXG4gIHB1YmxpYyBzb3J0UGFyYW1ldGVyczogU29ydFBhcmFtZXRlcnM7XG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5OiBTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5O1xuICBwdWJsaWMgZHJhZnRzQ291bnQ6IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3VtZXJTb3J0UGFyYW1ldGVyczogeyBjb2x1bW46IHN0cmluZywgb3JkZXI6IFNvcnRPcmRlciwgdHlwZTogc3RyaW5nIH0gPSB7IGNvbHVtbjogbnVsbCwgb3JkZXI6IG51bGwsIHR5cGU6IG51bGwgfTtcblxuICBwdWJsaWMgc2VsZWN0ZWRDYXNlczogU2VhcmNoUmVzdWx0Vmlld0l0ZW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3Rvcnk6IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnksXG4gICAgYXBwQ29uZmlnOiBBYnN0cmFjdEFwcENvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5U2VydmljZTogQWN0aXZpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZVJlZmVyZW5jZVBpcGU6IENhc2VSZWZlcmVuY2VQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2Vob2xkZXJTZXJ2aWNlOiBQbGFjZWhvbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnkgPSBzZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5O1xuICAgIHRoaXMucGFnaW5hdGlvblBhZ2VTaXplID0gYXBwQ29uZmlnLmdldFBhZ2luYXRpb25QYWdlU2l6ZSgpO1xuICAgIHRoaXMuaGlkZVJvd3MgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVTZWxlY3RlZENhc2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHByZVNlbGVjdGVkQ2FzZSBvZiB0aGlzLnByZVNlbGVjdGVkQ2FzZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXNlcyAmJiAhdGhpcy5zZWxlY3RlZENhc2VzLnNvbWUoYUNhc2UgPT4gYUNhc2UuY2FzZV9pZCA9PT0gcHJlU2VsZWN0ZWRDYXNlLmNhc2VfaWQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnB1c2gocHJlU2VsZWN0ZWRDYXNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKCdldmVudFVybCcpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmVtaXQodGhpcy5zZWxlY3RlZENhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBpZiAoY2hhbmdlc1sncmVzdWx0VmlldyddKSB7XG4gICAgICB0aGlzLmhpZGVSb3dzID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuc29ydFBhcmFtZXRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICAvLyBDbG9uZSBgcmVzdWx0Vmlld2AgdG8gcHJldmVudCBzb3J0aW5nIHRoZSBleHRlcm5hbCB2YXJpYWJsZVxuICAgICAgdGhpcy5yZXN1bHRWaWV3ID0ge1xuICAgICAgICBjb2x1bW5zOiB0aGlzLnJlc3VsdFZpZXcuY29sdW1ucy5zbGljZSgwKSxcbiAgICAgICAgcmVzdWx0czogdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMuc2xpY2UoMCksXG4gICAgICAgIGhhc0RyYWZ0czogdGhpcy5yZXN1bHRWaWV3Lmhhc0RyYWZ0c1xuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXN1bHRWaWV3LmNvbHVtbnMgPSB0aGlzLnJlc3VsdFZpZXcuY29sdW1ucy5zb3J0KChhOiBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uLCBiOiBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uKSA9PiB7XG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmh5ZHJhdGVSZXN1bHRWaWV3KCk7XG4gICAgICB0aGlzLmRyYWZ0c0NvdW50ID0gdGhpcy5kcmFmdHNDb3VudCA/IHRoaXMuZHJhZnRzQ291bnQgOiB0aGlzLm51bWJlck9mRHJhZnRzKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydwYWdlJ10pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IChjaGFuZ2VzWydwYWdlJ10pLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3VsdFRvdGFsKCk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnBhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9yZXN1bHRzX2NvdW50O1xuICAgIGNvbnN0IG1heGltdW1SZXN1bHRSZWFjaGVkID0gdG90YWwgPj0gdGhpcy5QQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVDtcbiAgICB0aGlzLnBhZ2luYXRpb25MaW1pdEVuZm9yY2VkID0gbWF4aW11bVJlc3VsdFJlYWNoZWQ7XG5cbiAgICByZXR1cm4gbWF4aW11bVJlc3VsdFJlYWNoZWQgPyB0aGlzLlBBR0lOQVRJT05fTUFYX0lURU1fUkVTVUxUIDogdG90YWw7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENhc2VzID0gW107XG4gICAgdGhpcy5zZWxlY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIGNhbkJlU2hhcmVkKGNhc2VWaWV3OiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlVmlldy5zdXBwbGVtZW50YXJ5X2RhdGEgJiYgY2FzZVZpZXcuc3VwcGxlbWVudGFyeV9kYXRhLmhhc093blByb3BlcnR5KCdvcmdzX2Fzc2lnbmVkX3VzZXJzJyk7XG4gIH1cblxuICBwdWJsaWMgY2FuQW55QmVTaGFyZWQoKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzW2ldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxPblBhZ2VTZWxlY3RlZCgpKSB7XG4gICAgICAvLyBhbGwgY2FzZXMgYWxyZWFkeSBzZWxlY3RlZCwgc28gdW5zZWxlY3QgYWxsIG9uIHRoaXMgcGFnZVxuICAgICAgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLmZvckVhY2goKHMsIGkpID0+IHtcbiAgICAgICAgICBpZiAoYy5jYXNlX2lkID09PSBzLmNhc2VfaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChjKSAmJiB0aGlzLmNhbkJlU2hhcmVkKGMpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnB1c2goYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWRDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlU2VsZWN0aW9uKGM6IFNlYXJjaFJlc3VsdFZpZXdJdGVtKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChjKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLmZvckVhY2goKHMsIGkpID0+IHtcbiAgICAgICAgaWYgKGMuY2FzZV9pZCA9PT0gcy5jYXNlX2lkKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnNwbGljZShpLCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKGMpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWRDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZChjOiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5zZWxlY3RlZENhc2VzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGMuY2FzZV9pZCA9PT0gdGhpcy5zZWxlY3RlZENhc2VzW2ldLmNhc2VfaWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxPblBhZ2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBsZXQgY2FuQmVTaGFyZWRDb3VudCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHIgPSB0aGlzLnJlc3VsdFZpZXcucmVzdWx0c1tpXTtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKHIpKSB7XG4gICAgICAgIGNhbkJlU2hhcmVkQ291bnQgKys7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChyKSAmJiB0aGlzLmNhbkJlU2hhcmVkKHIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNhbkJlU2hhcmVkQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSHlkcmF0ZXMgcmVzdWx0IHZpZXcgd2l0aCBjYXNlIGZpZWxkIGRlZmluaXRpb25zLlxuICAgKi9cbiAgLy8gQSBsb25nZXIgdGVybSByZXNvbHV0aW9uIGlzIHRvIG1vdmUgdGhpcyBwaWVjZSBvZiBsb2dpYyB0byB0aGUgYmFja2VuZFxuICBwdWJsaWMgaHlkcmF0ZVJlc3VsdFZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgY29uc3QgY2FzZUZpZWxkcyA9IFtdO1xuXG4gICAgICBPYmplY3Qua2V5cyhyZXN1bHQuY2FzZV9maWVsZHMpLmZvckVhY2goZmllbGRJZCA9PiB7XG5cbiAgICAgICAgY29uc3QgZmllbGQgPSByZXN1bHQuY2FzZV9maWVsZHNbZmllbGRJZF07XG5cbiAgICAgICAgY2FzZUZpZWxkcy5wdXNoKE9iamVjdC5hc3NpZ24obmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICAgICAgaWQ6IGZpZWxkSWQsXG4gICAgICAgICAgbGFiZWw6IG51bGwsXG4gICAgICAgICAgZmllbGRfdHlwZToge30sXG4gICAgICAgICAgdmFsdWU6IGZpZWxkLFxuICAgICAgICAgIGRpc3BsYXlfY29udGV4dDogbnVsbCxcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJlc3VsdC5oeWRyYXRlZF9jYXNlX2ZpZWxkcyA9IGNhc2VGaWVsZHM7XG4gICAgICByZXN1bHQuY29sdW1ucyA9IHt9O1xuXG4gICAgICB0aGlzLnJlc3VsdFZpZXcuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIHJlc3VsdC5jb2x1bW5zW2NvbC5jYXNlX2ZpZWxkX2lkXSA9IHRoaXMuYnVpbGRDYXNlRmllbGQoY29sLCByZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGFnZShwYWdlKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlUm93cyA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZC5pbml0ID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbjtcbiAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gdGhpcy5jYXNlVHlwZTtcbiAgICB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA9IHRoaXMuY2FzZVN0YXRlO1xuICAgIHRoaXMuc2VsZWN0ZWQuZm9ybUdyb3VwID0gdGhpcy5jYXNlRmlsdGVyRkc7XG4gICAgdGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcyA9IHRoaXMubWV0YWRhdGFGaWVsZHM7XG4gICAgdGhpcy5zZWxlY3RlZC5wYWdlID0gcGFnZTtcbiAgICAvLyBBcHBseSBmaWx0ZXJzXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBxdWVyeVBhcmFtc1tTZWFyY2hSZXN1bHRDb21wb25lbnQuUEFSQU1fSlVSSVNESUNUSU9OXSA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID8gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQgOiBudWxsO1xuICAgIHF1ZXJ5UGFyYW1zW1NlYXJjaFJlc3VsdENvbXBvbmVudC5QQVJBTV9DQVNFX1RZUEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA/IHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuaWQgOiBudWxsO1xuICAgIHF1ZXJ5UGFyYW1zW1NlYXJjaFJlc3VsdENvbXBvbmVudC5QQVJBTV9DQVNFX1NUQVRFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID8gdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUuaWQgOiBudWxsO1xuICAgIHRoaXMuY2hhbmdlUGFnZS5lbWl0KHtcbiAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgcXVlcnlQYXJhbXNcbiAgICB9KTtcblxuICAgIGNvbnN0IHRvcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3AnKTtcbiAgICBpZiAodG9wQ29udGFpbmVyKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgICAgdG9wQ29udGFpbmVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJ1aWxkQ2FzZUZpZWxkKGNvbDogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbiwgcmVzdWx0OiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IENhc2VGaWVsZCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICBpZDogY29sLmNhc2VfZmllbGRfaWQsXG4gICAgICBsYWJlbDogY29sLmxhYmVsLFxuICAgICAgZmllbGRfdHlwZTogY29sLmNhc2VfZmllbGRfdHlwZSxcbiAgICAgIHZhbHVlOiByZXN1bHQuY2FzZV9maWVsZHNbY29sLmNhc2VfZmllbGRfaWRdLFxuICAgICAgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlcjogY29sLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIsXG4gICAgICBkaXNwbGF5X2NvbnRleHQ6IGNvbC5kaXNwbGF5X2NvbnRleHQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sdW1uc1dpdGhQcmVmaXgoY29sOiBDYXNlRmllbGQsIHJlc3VsdDogU2VhcmNoUmVzdWx0Vmlld0l0ZW0pOiBDYXNlRmllbGQge1xuICAgIGNvbC52YWx1ZSA9IHRoaXMuZHJhZnRQcmVmaXhPckdldChjb2wsIHJlc3VsdCk7XG4gICAgY29sLnZhbHVlID0gdGhpcy5wbGFjZWhvbGRlclNlcnZpY2UucmVzb2x2ZVBsYWNlaG9sZGVycyhyZXN1bHQuY2FzZV9maWVsZHMsIGNvbC52YWx1ZSk7XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNSZXN1bHRzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmxlbmd0aCAmJiB0aGlzLnBhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9wYWdlc19jb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNEcmFmdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Vmlldy5oYXNEcmFmdHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wYXJhdG9yKGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbik6IFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeS5jcmVhdGVTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3IoY29sdW1uKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0KGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbikge1xuICAgIGlmICh0aGlzLmNvbnN1bWVyU29ydGluZ0VuYWJsZWQpIHtcbiAgICAgIGlmIChjb2x1bW4uY2FzZV9maWVsZF9pZCAhPT0gdGhpcy5jb25zdW1lclNvcnRQYXJhbWV0ZXJzLmNvbHVtbikge1xuICAgICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMub3JkZXIgPSBTb3J0T3JkZXIuREVTQ0VORElORztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5vcmRlciA9IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5vcmRlciA9PT0gU29ydE9yZGVyLkRFU0NFTkRJTkcgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0T3JkZXIuQVNDRU5ESU5HIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydE9yZGVyLkRFU0NFTkRJTkc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMuY29sdW1uID0gY29sdW1uLmNhc2VfZmllbGRfaWQ7XG4gICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMudHlwZSA9IGNvbHVtbi5jYXNlX2ZpZWxkX3R5cGUudHlwZTtcbiAgICAgIHRoaXMuc29ydEhhbmRsZXIuZW1pdCh0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJhdG9yKGNvbHVtbikgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTb3J0QXNjZW5kaW5nKGNvbHVtbikpIHtcbiAgICAgICAgdGhpcy5zb3J0UGFyYW1ldGVycyA9IG5ldyBTb3J0UGFyYW1ldGVycyh0aGlzLmNvbXBhcmF0b3IoY29sdW1uKSwgU29ydE9yZGVyLkFTQ0VORElORyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnRQYXJhbWV0ZXJzID0gbmV3IFNvcnRQYXJhbWV0ZXJzKHRoaXMuY29tcGFyYXRvcihjb2x1bW4pLCBTb3J0T3JkZXIuREVTQ0VORElORyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnRXaWRnZXQoY29sdW1uOiBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uKSB7XG4gICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvbnN1bWVyU29ydGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmNhc2VfZmllbGRfaWQgPT09IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5jb2x1bW47XG4gICAgICBjb25zdCBpc0FzY2VuZGluZyA9IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5vcmRlciA9PT0gU29ydE9yZGVyLkFTQ0VORElORztcbiAgICAgIGNvbmRpdGlvbiA9ICFpc0NvbHVtbiB8fCAoaXNDb2x1bW4gJiYgaXNBc2NlbmRpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25kaXRpb24gPSB0aGlzLmlzU29ydEFzY2VuZGluZyhjb2x1bW4pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25kaXRpb24gPyAnJiM5NjYwOycgOiAnJiM5NjUwOyc7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZpdHlFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5U2VydmljZS5pc0VuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgaHlwaGVuYXRlSWZDYXNlUmVmZXJlbmNlT3JHZXQoY29sLCByZXN1bHQpOiBhbnkge1xuICAgIGlmIChjb2wuY2FzZV9maWVsZF9pZCA9PT0gJ1tDQVNFX1JFRkVSRU5DRV0nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYXNlUmVmZXJlbmNlUGlwZS50cmFuc2Zvcm0ocmVzdWx0LmNhc2VfZmllbGRzW2NvbC5jYXNlX2ZpZWxkX2lkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2wuaWQpIHtcbiAgICAgICAgaWYgKGNvbC5pZCA9PT0gJ1tDQVNFX1JFRkVSRU5DRV0nKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FzZVJlZmVyZW5jZVBpcGUudHJhbnNmb3JtKHJlc3VsdC5jYXNlX2ZpZWxkc1tjb2wuaWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmNhc2VfZmllbGRzW2NvbC5pZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQuY2FzZV9maWVsZHNbY29sLmNhc2VfZmllbGRfaWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkcmFmdFByZWZpeE9yR2V0KGNvbCwgcmVzdWx0KTogYW55IHtcbiAgICByZXR1cm4gcmVzdWx0LmNhc2VfaWQuc3RhcnRzV2l0aChEUkFGVF9QUkVGSVgpID8gRFJBRlRfUFJFRklYIDogdGhpcy5oeXBoZW5hdGVJZkNhc2VSZWZlcmVuY2VPckdldChjb2wsIHJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgaXNTb3J0QXNjZW5kaW5nKGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRTb3J0T3JkZXIgPSB0aGlzLmN1cnJlbnRTb3J0T3JkZXIoY29sdW1uKTtcblxuICAgIHJldHVybiBjdXJyZW50U29ydE9yZGVyID09PSBTb3J0T3JkZXIuVU5TT1JURUQgfHwgY3VycmVudFNvcnRPcmRlciA9PT0gU29ydE9yZGVyLkRFU0NFTkRJTkc7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRTb3J0T3JkZXIoY29sdW1uOiBTZWFyY2hSZXN1bHRWaWV3Q29sdW1uKTogU29ydE9yZGVyIHtcblxuICAgIGxldCBpc0FzY2VuZGluZyA9IHRydWU7XG4gICAgbGV0IGlzRGVzY2VuZGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5jb21wYXJhdG9yKGNvbHVtbikgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFNvcnRPcmRlci5VTlNPUlRFRDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbXBhcmlzb24gPSB0aGlzLmNvbXBhcmF0b3IoY29sdW1uKS5jb21wYXJlKHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzW2ldLCB0aGlzLnJlc3VsdFZpZXcucmVzdWx0c1tpICsgMV0pO1xuICAgICAgaXNEZXNjZW5kaW5nID0gaXNEZXNjZW5kaW5nICYmIGNvbXBhcmlzb24gPD0gMDtcbiAgICAgIGlzQXNjZW5kaW5nID0gaXNBc2NlbmRpbmcgJiYgY29tcGFyaXNvbiA+PSAwO1xuICAgICAgaWYgKCFpc0FzY2VuZGluZyAmJiAhaXNEZXNjZW5kaW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNBc2NlbmRpbmcgPyBTb3J0T3JkZXIuQVNDRU5ESU5HIDogaXNEZXNjZW5kaW5nID8gU29ydE9yZGVyLkRFU0NFTkRJTkcgOiBTb3J0T3JkZXIuVU5TT1JURUQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rmlyc3RSZXN1bHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9ICh0aGlzLnNlbGVjdGVkLnBhZ2UgPyB0aGlzLnNlbGVjdGVkLnBhZ2UgOiAxKTtcbiAgICByZXR1cm4gKChjdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUpICsgMSArIHRoaXMuZ2V0RHJhZnRzQ291bnRJZk5vdFBhZ2VPbmUoY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RSZXN1bHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9ICh0aGlzLnNlbGVjdGVkLnBhZ2UgPyB0aGlzLnNlbGVjdGVkLnBhZ2UgOiAxKTtcbiAgICByZXR1cm4gKChjdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUpICsgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMubGVuZ3RoICsgdGhpcy5nZXREcmFmdHNDb3VudElmTm90UGFnZU9uZShjdXJyZW50UGFnZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG90YWxSZXN1bHRzKCk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnBhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9yZXN1bHRzX2NvdW50ICsgdGhpcy5kcmFmdHNDb3VudDtcblxuICAgIHJldHVybiB0b3RhbCA+PSB0aGlzLlBBR0lOQVRJT05fTUFYX0lURU1fUkVTVUxUID8gdGhpcy5QQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA6IHRvdGFsO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVDYXNlTGlua1VybChjYXNlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHVybCA9IHRoaXMuY2FzZUxpbmtVcmxUZW1wbGF0ZTtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgnanVyaXNkaWN0aW9uX2lkJywgdGhpcy5qdXJpc2RpY3Rpb24uaWQpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKCdjYXNlVHlwZV9pZCcsIHRoaXMuY2FzZVR5cGUuaWQpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKCdjYXNlX2lkJywgY2FzZUlkKTtcblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGdldERyYWZ0c0NvdW50SWZOb3RQYWdlT25lKGN1cnJlbnRQYWdlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY3VycmVudFBhZ2UgPiAxID8gdGhpcy5kcmFmdHNDb3VudCA6IDA7XG4gIH1cblxuICBwcml2YXRlIG51bWJlck9mRHJhZnRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmZpbHRlcihfID0+IF8uY2FzZV9pZC5zdGFydHNXaXRoKERSQUZUX1BSRUZJWCkpLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvQ2FzZShjYXNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuY2xpY2tDYXNlLmVtaXQoe1xuICAgICAgY2FzZUlkXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGM6IFNlYXJjaFJlc3VsdFZpZXdJdGVtKTogdm9pZCB7XG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdTcGFjZScpIHtcbiAgICAgIGlmICh0aGlzLmJyb3dzZXJTZXJ2aWNlLmlzRmlyZWZveCB8fCB0aGlzLmJyb3dzZXJTZXJ2aWNlLmlzU2FmYXJpIHx8IHRoaXMuYnJvd3NlclNlcnZpY2UuaXNJRU9yRWRnZSkge1xuICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGlvbihjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjx0YWJsZSAqbmdJZj1cImhhc1Jlc3VsdHMoKSB8fCBoYXNEcmFmdHMoKVwiPlxuICA8Y2FwdGlvbj5cbiAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCIgaWQ9XCJzZWFyY2gtcmVzdWx0LWhlYWRpbmdfX3RleHRcIiB0YWJpbmRleD1cIi0xXCI+e3sgY2FzZVN0YXRlID8gJ1lvdXIgY2FzZXMnIDogJ1NlYXJjaCByZXN1bHQnIHwgcnB4VHJhbnNsYXRlfX08L2gyPlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dCBwYWdpbmF0aW9uLWxpbWl0LXdhcm5pbmdcIiAqbmdJZj1cInBhZ2luYXRpb25MaW1pdEVuZm9yY2VkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19hc3Npc3RpdmVcIj57eydXYXJuaW5nJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICB7eydUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzdWx0IHNldCBpcycgfCBycHhUcmFuc2xhdGV9fSB7e3BhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9yZXN1bHRzX2NvdW50IHwgbnVtYmVyfX0uIHt7J09ubHkgdGhlIGZpcnN0IDEwLDAwMCByZWNvcmRzIGFyZSBhdmFpbGFibGUgZm9yIGRpc3BsYXkuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIoaGFzUmVzdWx0cygpIHx8IGhhc0RyYWZ0cygpKVwiIGNsYXNzPVwicGFnaW5hdGlvbi10b3BcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb3RhbFJlc3VsdHMoKSArICcgcmVzdWx0cyBoYXZlIGJlZW4gZm91bmQnIHwgcnB4VHJhbnNsYXRlXCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCIgaWQ9XCJzZWFyY2gtcmVzdWx0LXN1bW1hcnlfX3RleHRcIj57eydTaG93aW5nJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgZ2V0Rmlyc3RSZXN1bHQoKSB9fTwvc3Bhbj5cbiAgICAgICAge3sndG8nIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBnZXRMYXN0UmVzdWx0KCkgfX08L3NwYW4+XG4gICAgICAgIHt7J29mJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3sgZ2V0VG90YWxSZXN1bHRzKCkgfX08L3NwYW4+IHt7J3Jlc3VsdHMnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIihoYXNSZXN1bHRzKCkgfHwgaGFzRHJhZnRzKCkpICYmIHNlbGVjdGlvbkVuYWJsZWRcIiBjbGFzcz1cInJlc2V0LXNlbGVjdGlvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVzZXQgc2VsZWN0aW9uJyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgPHNwYW4+PGEgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LXJlc2V0LWxpbmtcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIj57eydSZXNldCBjYXNlIHNlbGVjdGlvbicgfCBycHhUcmFuc2xhdGV9fTwvYT48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvY2FwdGlvbj5cbiAgPHRoZWFkPlxuICAgIDx0ciBzY29wZT1cInJvd1wiPlxuICAgICAgPHRoICpuZ0lmPVwic2VsZWN0aW9uRW5hYmxlZFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2NoZWNrYm94XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwic2VsZWN0LWFsbFwiIG5hbWU9XCJzZWxlY3QtYWxsXCIgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGwoKVwiIFtjaGVja2VkXT1cImFsbE9uUGFnZVNlbGVjdGVkKClcIiBbZGlzYWJsZWRdPVwiIWNhbkFueUJlU2hhcmVkKClcIiAvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwic2VsZWN0LWFsbFwiPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIHJlc3VsdFZpZXcuY29sdW1uc1wiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1oZWFkZXJcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NvcnQgYnkgJyArIGNvbC5sYWJlbCArICcgJyArIGlzU29ydEFzY2VuZGluZyhjb2wpPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJ1wiPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1yZXN1bHQtY29sdW1uLWxhYmVsXCIgKGNsaWNrKT1cInNvcnQoY29sKVwiPnt7Y29sLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbXBhcmF0b3IoY29sKVwiIGNsYXNzPVwic2VhcmNoLXJlc3VsdC1jb2x1bW4tc29ydFwiPlxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzb3J0KGNvbClcIiBjbGFzcz1cInNvcnQtd2lkZ2V0XCIgW2lubmVySFRNTF09XCJzb3J0V2lkZ2V0KGNvbClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+PC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvdGg+XG4gICAgICA8dGggKm5nSWY9XCJhY3Rpdml0eUVuYWJsZWQoKVwiIHN0eWxlPVwid2lkdGg6IDExMHB4O1wiPjwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5PlxuXG4gICAgPCEtLSBzb3J0ZWQgYnkgY29uc3VtZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnN1bWVyU29ydGluZ0VuYWJsZWRcIj5cbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcmVzdWx0IG9mIHJlc3VsdFZpZXcucmVzdWx0cyB8IHBhZ2luYXRlOiB7IGl0ZW1zUGVyUGFnZTogcGFnaW5hdGlvblBhZ2VTaXplLCBjdXJyZW50UGFnZTogc2VsZWN0ZWQucGFnZSwgdG90YWxJdGVtczogcmVzdWx0VG90YWwgfVwiPlxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3Rpb25FbmFibGVkXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2hlY2tib3hcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwic2VsZWN0LXt7IHJlc3VsdC5jYXNlX2lkIH19XCIgbmFtZT1cInNlbGVjdC17eyByZXN1bHQuY2FzZV9pZCB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlU2VsZWN0aW9uKHJlc3VsdClcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHJlc3VsdClcIiBbZGlzYWJsZWRdPVwiIWNhbkJlU2hhcmVkKHJlc3VsdClcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIiBmb3I9XCJzZWxlY3Qte3sgcmVzdWx0LmNhc2VfaWQgfX1cIj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cInNlYXJjaC1yZXN1bHQtY29sdW1uLWNlbGxcIiAqbmdGb3I9XCJsZXQgY29sIG9mIHJlc3VsdFZpZXcuY29sdW1uczsgbGV0IGNvbEluZGV4ID0gaW5kZXhcIiBzY29wZT1cInJvd1wiPlxuICAgICAgICAgIDxhICpuZ0lmPVwiY29sSW5kZXggPT0gMFwiIFtyb3V0ZXJMaW5rXT1cInByZXBhcmVDYXNlTGlua1VybChyZXN1bHQuY2FzZV9pZClcIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiZ28gdG8gY2FzZSB3aXRoIENhc2UgcmVmZXJlbmNlOnt7IHJlc3VsdC5jYXNlX2lkIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fVwiIGNsYXNzPVwiZ292dWstbGlua1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cInRleHQtMTZcIiAqbmdJZj1cIiFoaWRlUm93c1wiPlxuICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgKm5nSWY9XCJkcmFmdFByZWZpeE9yR2V0KGNvbCwgcmVzdWx0KTsgZWxzZSBjYXNlX3JlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZ2V0Q29sdW1uc1dpdGhQcmVmaXgocmVzdWx0LmNvbHVtbnNbY29sLmNhc2VfZmllbGRfaWRdLCByZXN1bHQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0RmllbGRzXT1cInJlc3VsdC5oeWRyYXRlZF9jYXNlX2ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudHNUb1N1YnN0aXR1dGVdPVwiWyd2YWx1ZSddXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjYXNlX3JlZmVyZW5jZT57e3Jlc3VsdC5jYXNlX2lkIHwgY2NkQ2FzZVJlZmVyZW5jZX19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sSW5kZXggIT0gMFwiIGNsYXNzPVwidGV4dC0xNlwiIFtzdHlsZS52aXNpYmlsaXR5XT1cImhpZGVSb3dzID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBjY2RMYWJlbFN1YnN0aXR1dG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJyZXN1bHQuY29sdW1uc1tjb2wuY2FzZV9maWVsZF9pZF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0RmllbGRzXT1cInJlc3VsdC5oeWRyYXRlZF9jYXNlX2ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRzVG9TdWJzdGl0dXRlXT1cIlsndmFsdWUnXVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCAqbmdJZj1cImFjdGl2aXR5RW5hYmxlZCgpXCI+XG4gICAgICAgICAgPGRpdiBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlUm93cyA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCI+XG4gICAgICAgICAgICA8Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwicmVzdWx0LmNhc2VfaWRcIiBbZGlzcGxheU1vZGVdPVwiSUNPTlwiPjwvY2NkLWFjdGl2aXR5PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIHNvcnRlZCBieSB0b29sa2l0IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uc3VtZXJTb3J0aW5nRW5hYmxlZFwiPlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCByZXN1bHQgb2YgcmVzdWx0Vmlldy5yZXN1bHRzIHwgY2NkU29ydFNlYXJjaFJlc3VsdCA6IHNvcnRQYXJhbWV0ZXJzIHwgcGFnaW5hdGU6IHsgaXRlbXNQZXJQYWdlOiBwYWdpbmF0aW9uUGFnZVNpemUsIGN1cnJlbnRQYWdlOiBzZWxlY3RlZC5wYWdlLCB0b3RhbEl0ZW1zOiByZXN1bHRUb3RhbCB9XCI+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGlvbkVuYWJsZWRcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19jaGVja2JveFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgaWQ9XCJzZWxlY3Qte3sgcmVzdWx0LmNhc2VfaWQgfX1cIiBuYW1lPVwic2VsZWN0LXt7IHJlc3VsdC5jYXNlX2lkIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJjaGFuZ2VTZWxlY3Rpb24ocmVzdWx0KVwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQocmVzdWx0KVwiIFtkaXNhYmxlZF09XCIhY2FuQmVTaGFyZWQocmVzdWx0KVwiIChrZXl1cCk9XCJvbktleVVwKCRldmVudCwgcmVzdWx0KVwiIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiIGZvcj1cInNlbGVjdC17eyByZXN1bHQuY2FzZV9pZCB9fVwiPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwic2VhcmNoLXJlc3VsdC1jb2x1bW4tY2VsbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgcmVzdWx0Vmlldy5jb2x1bW5zOyBsZXQgY29sSW5kZXggPSBpbmRleFwiIHNjb3BlPVwicm93XCI+XG5cbiAgICAgICAgICA8YSAqbmdJZj1cImNvbEluZGV4ID09IDBcIiBbcm91dGVyTGlua109XCJwcmVwYXJlQ2FzZUxpbmtVcmwocmVzdWx0LmNhc2VfaWQpXCJcbiAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cImdvIHRvIGNhc2Ugd2l0aCBDYXNlIHJlZmVyZW5jZTp7eyByZXN1bHQuY2FzZV9pZCB8IGNjZENhc2VSZWZlcmVuY2UgfX1cIiBjbGFzcz1cImdvdnVrLWxpbmtcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJ0ZXh0LTE2XCIgKm5nSWY9XCIhaGlkZVJvd3NcIj5cbiAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkICpuZ0lmPVwiZHJhZnRQcmVmaXhPckdldChjb2wsIHJlc3VsdCk7IGVsc2UgY2FzZV9yZWZlcmVuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImdldENvbHVtbnNXaXRoUHJlZml4KHJlc3VsdC5jb2x1bW5zW2NvbC5jYXNlX2ZpZWxkX2lkXSwgcmVzdWx0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dEZpZWxkc109XCJyZXN1bHQuaHlkcmF0ZWRfY2FzZV9maWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRzVG9TdWJzdGl0dXRlXT1cIlsndmFsdWUnXVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FzZV9yZWZlcmVuY2U+e3tyZXN1bHQuY2FzZV9pZCB8IGNjZENhc2VSZWZlcmVuY2V9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbEluZGV4ICE9IDBcIiBjbGFzcz1cInRleHQtMTZcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlUm93cyA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCI+XG4gICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgY2NkTGFiZWxTdWJzdGl0dXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwicmVzdWx0LmNvbHVtbnNbY29sLmNhc2VfZmllbGRfaWRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dEZpZWxkc109XCJyZXN1bHQuaHlkcmF0ZWRfY2FzZV9maWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50c1RvU3Vic3RpdHV0ZV09XCJbJ3ZhbHVlJ11cIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm5nSWY9XCJhY3Rpdml0eUVuYWJsZWQoKVwiPlxuICAgICAgICAgIDxkaXYgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZVJvd3MgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiPlxuICAgICAgICAgICAgPGNjZC1hY3Rpdml0eSBbY2FzZUlkXT1cInJlc3VsdC5jYXNlX2lkXCIgW2Rpc3BsYXlNb2RlXT1cIklDT05cIj48L2NjZC1hY3Rpdml0eT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbjxjY2QtcGFnaW5hdGlvblxuICAqbmdJZj1cImhhc1Jlc3VsdHMoKVwiXG4gIChwYWdlQ2hhbmdlKT1cImdvVG9QYWdlKCRldmVudClcIlxuICBbdmlzaWJpbGl0eUxhYmVsXT1cImhpZGVSb3dzID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIlxuICBbYXV0b0hpZGVdPVwidHJ1ZVwiXG4gIFttYXhTaXplXT1cIjhcIlxuICBbc2NyZWVuUmVhZGVyUGFnaW5hdGlvbkxhYmVsXT1cIidQYWdpbmF0aW9uJ1wiXG4gIFtzY3JlZW5SZWFkZXJQYWdlTGFiZWxdPVwicGFnZVwiXG4gIFtzY3JlZW5SZWFkZXJDdXJyZW50TGFiZWxdPVwiJ1lvdVxcJ3JlIG9uIHBhZ2UnXCI+PC9jY2QtcGFnaW5hdGlvbj5cblxuPGRpdiAqbmdJZj1cIiEoaGFzUmVzdWx0cygpIHx8IGhhc0RyYWZ0cygpKVwiIGNsYXNzPVwibm90aWZpY2F0aW9uXCJcblthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ05vIGNhc2VzIGZvdW5kLiBUcnkgdXNpbmcgZGlmZmVyZW50IGZpbHRlcnMuJyB8IHJweFRyYW5zbGF0ZVwiPlxue3snTm8gY2FzZXMgZm91bmQuIFRyeSB1c2luZyBkaWZmZXJlbnQgZmlsdGVycy4nIHwgcnB4VHJhbnNsYXRlfX1cbjwvZGl2PlxuIl19
|
|
854
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLXJlc3VsdC9zZWFyY2gtcmVzdWx0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zZWFyY2gtcmVzdWx0L3NlYXJjaC1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUNsRCxZQUFZLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUNWLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLHFDQUFxQyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7SUNKM0gsK0JBQXlGO0lBQ3ZGLGdDQUEwRDtJQUFBLGlCQUFDO0lBQUEsaUJBQU87SUFDbEUsa0NBQXlDO0lBQ3ZDLGdDQUE0QztJQUFBLFlBQTRCOztJQUFBLGlCQUFPO0lBQy9FLFlBQ0Y7Ozs7SUFBQSxpQkFBUztJQUNYLGlCQUFNOzs7SUFIMEMsZUFBNEI7SUFBNUIscURBQTRCO0lBQ3hFLGVBQ0Y7SUFERSxnUUFDRjs7O0lBR0YsK0JBQ29HOztJQUNsRyxnQ0FBdUQ7SUFBQSxZQUNyRDs7SUFBQSxnQ0FBdUM7SUFBQSxZQUFzQjtJQUFBLGlCQUFPO0lBQ3BFLFlBQ0E7O0lBQUEsZ0NBQXVDO0lBQUEsYUFBcUI7SUFBQSxpQkFBTztJQUNuRSxhQUNBOztJQUFBLGlDQUF1QztJQUFBLGFBQXVCO0lBQUEsaUJBQU87SUFBQyxhQUE0Qjs7SUFBQSxpQkFBTztJQUM3RyxpQkFBTTs7O0lBUEYseUdBQWlGO0lBQzVCLGVBQ3JEO0lBRHFELGdFQUNyRDtJQUF1QyxlQUFzQjtJQUF0Qiw2Q0FBc0I7SUFDN0QsZUFDQTtJQURBLDREQUNBO0lBQXVDLGVBQXFCO0lBQXJCLDRDQUFxQjtJQUM1RCxlQUNBO0lBREEsNkRBQ0E7SUFBdUMsZUFBdUI7SUFBdkIsOENBQXVCO0lBQVEsZUFBNEI7SUFBNUIsaUVBQTRCOzs7O0lBRXRHLCtCQUNxRDs7SUFDbkQsNEJBQU07SUFBQSw2QkFBeUY7SUFBM0Isb01BQTBCO0lBQUMsWUFBeUM7O0lBQUEsaUJBQUk7SUFBQSxpQkFBTztJQUNySixpQkFBTTs7SUFGTixxRUFBb0Q7SUFDNkMsZUFBeUM7SUFBekMsa0VBQXlDOzs7O0lBS3hJLDhCQUF1RTtJQUNyRSwrQkFBb0M7SUFDbEMsaUNBQWlMO0lBQXhGLHFNQUFzQjtJQUEvRyxpQkFBaUw7SUFDakwsNEJBQ1E7SUFDVixpQkFBTTtJQUNSLGlCQUFLOzs7SUFKK0csZUFBK0I7SUFBL0Isb0RBQStCLHNDQUFBOzs7O0lBYTNJLCtCQUErRDtJQUM3RCw2QkFBbUc7SUFBaEcscVBBQW1CO0lBQTZFLGlCQUFJO0lBQ3pHLGlCQUFNOzs7O0lBRHVDLGVBQTZCO0lBQTdCLDBFQUE2Qjs7OztJQVRsRiwwQkFBMkM7SUFDekMsaUNBQ3VIOztJQUNySCwwQkFBSTtJQUNGLDBCQUFJO0lBQ0YsK0JBQTREO0lBQXBCLGtPQUFtQjtJQUN6RCxZQUNGOztJQUFBLGlCQUFNO0lBQ04scUZBRU07SUFDUixpQkFBSztJQUNQLGlCQUFLO0lBQ1AsaUJBQVE7SUFDVixpQkFBSzs7OztJQVpELGVBQW9IO0lBQXBILG1KQUFvSDtJQUk5RyxlQUNGO0lBREUsb0VBQ0Y7SUFDTSxlQUFxQjtJQUFyQixpREFBcUI7OztJQU9uQyx5QkFBeUQ7Ozs7SUFRdkQsOEJBQXVFO0lBQ3JFLCtCQUFvQztJQUNsQyxpQ0FDd0g7SUFBdEcsMFJBQWtDO0lBRHBELGlCQUN3SDtJQUN4SCw0QkFDUTtJQUNWLGlCQUFNO0lBQ1IsaUJBQUs7Ozs7SUFMc0MsZUFBZ0M7SUFBaEMsa0VBQWdDO0lBQUMsb0VBQWtDO0lBQ3JELHdEQUE4Qiw4Q0FBQTtJQUNoQyxlQUFpQztJQUFqQyxtRUFBaUM7Ozs7SUFRbEYscUNBR29FOzs7OztJQUZoQywrR0FBNkUsa0RBQUEsb0RBQUE7OztJQUdwRixZQUFxQzs7OztJQUFyQyw4REFBcUM7OztJQUxwRSxpQ0FBZ0Q7SUFDOUMsa0pBR29FO0lBQ3BFLDZLQUFnRjtJQUNsRiwwQkFBZTs7Ozs7O0lBTEksZUFBcUM7SUFBckMsb0VBQXFDLGtCQUFBOzs7SUFIMUQsNkJBQzhHOztJQUM1RywrSEFNZTtJQUNqQixpQkFBSTs7OztJQVJGLHlIQUF3RjtJQURqRSwyRUFBaUQ7SUFFekMsZUFBZTtJQUFmLHdDQUFlOzs7SUFRaEQsK0JBQWdHO0lBQzlGLHFDQUdvRTtJQUN0RSxpQkFBTTs7Ozs7SUFMcUMscUVBQW9EO0lBRTdFLGVBQStDO0lBQS9DLHFFQUErQyxrREFBQSxvREFBQTs7O0lBYm5FLDhCQUErRztJQUM3RyxxR0FTSTtJQUNKLHlHQUtNO0lBQ1IsaUJBQUs7OztJQWhCQyxlQUFtQjtJQUFuQix3Q0FBbUI7SUFVakIsZUFBbUI7SUFBbkIsd0NBQW1COzs7SUFPM0IsMEJBQThCO0lBQzVCLDJCQUEwRDtJQUN4RCxtQ0FBNEU7SUFDOUUsaUJBQU07SUFDUixpQkFBSzs7OztJQUhFLGVBQW9EO0lBQXBELHFFQUFvRDtJQUN6QyxlQUF5QjtJQUF6QiwyQ0FBeUIsNkJBQUE7OztJQTdCN0MsMEJBQW9KO0lBQ2xKLGlHQU9LO0lBQ0wsa0dBaUJLO0lBQ0wsaUdBSUs7SUFDUCxpQkFBSzs7O0lBL0JFLGVBQXNCO0lBQXRCLCtDQUFzQjtJQVEyQixlQUF1QjtJQUF2QixvREFBdUI7SUFrQnhFLGVBQXVCO0lBQXZCLGdEQUF1Qjs7OztJQTVCaEMsNkJBQTZDO0lBQzNDLDRGQWdDSzs7SUFDUCwwQkFBZTs7O0lBakNVLGVBQTJIO0lBQTNILDBLQUEySDs7OztJQXFDaEosOEJBQXVFO0lBQ3JFLCtCQUFvQztJQUNsQyxpQ0FDMEo7SUFBeEksMFJBQWtDLGlSQUFBO0lBRHBELGlCQUMwSjtJQUMxSiw0QkFDUTtJQUNWLGlCQUFNO0lBQ1IsaUJBQUs7Ozs7SUFMc0MsZUFBZ0M7SUFBaEMsa0VBQWdDO0lBQUMsb0VBQWtDO0lBQ3JELHdEQUE4Qiw4Q0FBQTtJQUNoQyxlQUFpQztJQUFqQyxtRUFBaUM7OztJQVNsRixxQ0FHb0U7Ozs7O0lBRmhDLCtHQUE2RSxrREFBQSxvREFBQTs7O0lBR3BGLFlBQXFDOzs7O0lBQXJDLDhEQUFxQzs7O0lBTHBFLGlDQUFnRDtJQUM5QyxrSkFHb0U7SUFDcEUsNktBQWdGO0lBQ2xGLDBCQUFlOzs7Ozs7SUFMSSxlQUFxQztJQUFyQyxvRUFBcUMsa0JBQUE7OztJQUgxRCw2QkFDOEc7O0lBQzVHLCtIQU1lO0lBQ2pCLGlCQUFJOzs7O0lBUkYseUhBQXdGO0lBRGpFLDJFQUFpRDtJQUV6QyxlQUFlO0lBQWYsd0NBQWU7OztJQVFoRCwrQkFBZ0c7SUFDOUYscUNBR29FO0lBQ3RFLGlCQUFNOzs7OztJQUxxQyxxRUFBb0Q7SUFFN0UsZUFBK0M7SUFBL0MscUVBQStDLGtEQUFBLG9EQUFBOzs7SUFkbkUsOEJBQStHO0lBRTdHLHFHQVNJO0lBQ0oseUdBS007SUFDUixpQkFBSzs7O0lBaEJDLGVBQW1CO0lBQW5CLHdDQUFtQjtJQVVqQixlQUFtQjtJQUFuQix3Q0FBbUI7OztJQU8zQiwwQkFBOEI7SUFDNUIsMkJBQTBEO0lBQ3hELG1DQUE0RTtJQUM5RSxpQkFBTTtJQUNSLGlCQUFLOzs7O0lBSEUsZUFBb0Q7SUFBcEQscUVBQW9EO0lBQ3pDLGVBQXlCO0lBQXpCLDJDQUF5Qiw2QkFBQTs7O0lBOUI3QywwQkFBMkw7SUFDekwsaUdBT0s7SUFDTCxrR0FrQks7SUFDTCxpR0FJSztJQUNQLGlCQUFLOzs7SUFoQ0UsZUFBc0I7SUFBdEIsK0NBQXNCO0lBUTJCLGVBQXVCO0lBQXZCLG9EQUF1QjtJQW1CeEUsZUFBdUI7SUFBdkIsZ0RBQXVCOzs7SUE3QmhDLDZCQUE4QztJQUM1Qyw0RkFpQ0s7OztJQUNQLDBCQUFlOzs7SUFsQ1UsZUFBa0s7SUFBbEssNE5BQWtLOzs7SUE3Ri9MLDZCQUEyQztJQUN6QywrQkFBUztJQUNQLDZCQUFzRTtJQUFBLFlBQWdFOztJQUFBLGlCQUFLO0lBRTNJLGdGQU1NO0lBRU4sZ0ZBUU07SUFDTiw4RUFHTTtJQUNSLGlCQUFVO0lBQ1YsNkJBQU87SUFDTCw2QkFBZ0I7SUFDZCw4RUFNSztJQUNMLDhFQWNLO0lBQ0wsK0VBQXlEO0lBQzNELGlCQUFLO0lBQ1AsaUJBQVE7SUFFUiw4QkFBTztJQUVMLGtHQWtDZTtJQUVmLG1HQW1DZTtJQUVqQixpQkFBUTtJQUNWLGlCQUFROzs7SUFoSWtFLGVBQWdFO0lBQWhFLDZGQUFnRTtJQUU1RSxlQUE2QjtJQUE3QixxREFBNkI7SUFRakYsZUFBbUM7SUFBbkMsZ0VBQW1DO0lBU25DLGVBQXVEO0lBQXZELDZGQUF1RDtJQU90RCxlQUFzQjtJQUF0Qiw4Q0FBc0I7SUFPUCxlQUFxQjtJQUFyQixtREFBcUI7SUFlcEMsZUFBdUI7SUFBdkIsK0NBQXVCO0lBTWYsZUFBNEI7SUFBNUIsb0RBQTRCO0lBb0M1QixlQUE2QjtJQUE3QixxREFBNkI7Ozs7SUF3Q2hELDBDQVFpRDtJQU4vQyxtT0FBK0I7SUFNZ0IsaUJBQWlCOzs7SUFMaEUsd0VBQW1ELGtCQUFBLGNBQUEsNkNBQUEsc0NBQUEsOENBQUE7OztJQU9yRCwrQkFDd0Y7O0lBQ3hGLFlBQ0E7O0lBQUEsaUJBQU07O0lBRk4sd0dBQXVGO0lBQ3ZGLGVBQ0E7SUFEQSx1R0FDQTs7QURsSUEsTUFBTSxPQUFPLHFCQUFxQjtJQXFGaEMsWUFDRSxxQ0FBNEUsRUFDNUUsU0FBNEIsRUFDWCxlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsa0JBQXNDLEVBQ3RDLGNBQThCLEVBQzlCLHFCQUE0QztRQUo1QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBdEY5QywrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFFN0MsU0FBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUE4QnhCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUd6QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHekIscUJBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUc5QywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFHL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBR3ZELGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUduRCxjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbEQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFNaEMsYUFBUSxHQVFYLEVBQUUsQ0FBQztRQU1BLDJCQUFzQixHQUF1RCxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFdkgsa0JBQWEsR0FBMkIsRUFBRSxDQUFDO1FBV2hELElBQUksQ0FBQyxxQ0FBcUMsR0FBRyxxQ0FBcUMsQ0FBQztRQUNuRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixLQUFLLE1BQU0sZUFBZSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDbkQsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDdEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7aUJBQzFDO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFFdkMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFFdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDaEMsOERBQThEO1lBQzlELElBQUksQ0FBQyxVQUFVLEdBQUc7Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDekMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUzthQUNyQyxDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBeUIsRUFBRSxDQUF5QixFQUFFLEVBQUU7Z0JBQzlHLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDaEY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBQzFELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUN0RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsb0JBQW9CLENBQUM7UUFFcEQsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBOEI7UUFDL0MsT0FBTyxRQUFRLENBQUMsa0JBQWtCLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTSxjQUFjO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDaEQsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDNUIsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2xDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO3dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ2pDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxlQUFlLENBQUMsQ0FBdUI7UUFDNUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNqQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUI7U0FDRjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sVUFBVSxDQUFDLENBQXVCO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZCLGdCQUFnQixFQUFHLENBQUM7YUFDckI7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM5QyxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFDRCxJQUFJLGdCQUFnQixLQUFLLENBQUMsRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx5RUFBeUU7SUFDbEUsaUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2QyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFFdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUVoRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUxQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLEVBQUUsRUFBRTtvQkFDN0MsRUFBRSxFQUFFLE9BQU87b0JBQ1gsS0FBSyxFQUFFLElBQUk7b0JBQ1gsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsS0FBSyxFQUFFLEtBQUs7b0JBQ1osZUFBZSxFQUFFLElBQUk7aUJBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBRXBCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBSTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixnQkFBZ0I7UUFDaEIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxSCxXQUFXLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9HLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVztTQUNaLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxRQUFRLENBQUMsYUFBYSxZQUFZLFdBQVcsRUFBRTtnQkFDakQsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMvQjtZQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTSxjQUFjLENBQUMsR0FBMkIsRUFBRSxNQUE0QjtRQUM3RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNwQyxFQUFFLEVBQUUsR0FBRyxDQUFDLGFBQWE7WUFDckIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLFVBQVUsRUFBRSxHQUFHLENBQUMsZUFBZTtZQUMvQixLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1lBQzVDLHlCQUF5QixFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7WUFDeEQsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxHQUFjLEVBQUUsTUFBNEI7UUFDdEUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7SUFDckYsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUE4QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxvQ0FBb0MsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sSUFBSSxDQUFDLE1BQThCO1FBQ3hDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksTUFBTSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFO2dCQUMvRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7YUFDMUQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDNUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNyQixTQUFTLENBQUMsVUFBVSxDQUFDO2FBQzFEO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzFELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDL0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3pDLE9BQU87YUFDUjtpQkFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEY7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6RjtTQUNGO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUE4QjtRQUM5QyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1lBQzdFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUM5RSxTQUFTLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO1FBRUQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVNLDZCQUE2QixDQUFDLEdBQUcsRUFBRSxNQUFNO1FBQzlDLElBQUksR0FBRyxDQUFDLGFBQWEsS0FBSyxrQkFBa0IsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUNoRjthQUFNO1lBQ0wsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO2dCQUNWLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxrQkFBa0IsRUFBRTtvQkFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JFO3FCQUFNO29CQUNMLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ25DO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUM5QztTQUNGO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQThCO1FBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZELE9BQU8sZ0JBQWdCLEtBQUssU0FBUyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQzlGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUE4QjtRQUVyRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDekMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQzNCO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0csWUFBWSxHQUFHLFlBQVksSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQy9DLFdBQVcsR0FBRyxXQUFXLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQyxNQUFNO2FBQ1A7U0FDRjtRQUNELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDdEcsQ0FBQztJQUVNLGNBQWM7UUFDbkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxPQUFPLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2SSxDQUFDO0lBRU0sZUFBZTtRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUU3RSxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVGLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFjO1FBQ3RDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNuQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxXQUFXO1FBQzVDLE9BQU8sV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEYsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQXFCLEVBQUUsQ0FBdUI7UUFDM0QsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFO2dCQUNuRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7SUFDSCxDQUFDOztBQXZic0Isd0NBQWtCLEdBQUcsY0FBYyxDQUFDO0FBQ3BDLHFDQUFlLEdBQUcsV0FBVyxDQUFDO0FBQzlCLHNDQUFnQixHQUFHLFlBQVksQ0FBQzswRkFKNUMscUJBQXFCOzBEQUFyQixxQkFBcUI7UUNmbEMsNEVBa0lRO1FBRVIsNEZBUWtFO1FBRWxFLHNFQUdNOztRQWpKRSwwREFBaUM7UUFxSXRDLGVBQWtCO1FBQWxCLHVDQUFrQjtRQVNmLGVBQW9DO1FBQXBDLDZEQUFvQzs7dUZEL0g3QixxQkFBcUI7Y0FMakMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFdBQVcsRUFBRSxnQ0FBZ0M7Z0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2FBQzlDO3dSQVlRLG1CQUFtQjtrQkFEekIsS0FBSztZQUlDLFlBQVk7a0JBRGxCLEtBQUs7WUFJQyxRQUFRO2tCQURkLEtBQUs7WUFJQyxTQUFTO2tCQURmLEtBQUs7WUFJQyxZQUFZO2tCQURsQixLQUFLO1lBSUMsVUFBVTtrQkFEaEIsS0FBSztZQUlDLElBQUk7a0JBRFYsS0FBSztZQUlDLGtCQUFrQjtrQkFEeEIsS0FBSztZQUlDLGNBQWM7a0JBRHBCLEtBQUs7WUFJQyxnQkFBZ0I7a0JBRHRCLEtBQUs7WUFJQyxnQkFBZ0I7a0JBRHRCLEtBQUs7WUFJQyxnQkFBZ0I7a0JBRHRCLEtBQUs7WUFJQyxzQkFBc0I7a0JBRDVCLEtBQUs7WUFJQyxTQUFTO2tCQURmLE1BQU07WUFJQSxVQUFVO2tCQURoQixNQUFNO1lBSUEsU0FBUztrQkFEZixNQUFNO1lBSUEsV0FBVztrQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFBsYWNlaG9sZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkLCBDYXNlU3RhdGUsIENhc2VUeXBlLCBEaXNwbGF5TW9kZSxcbiAgRFJBRlRfUFJFRklYLCBKdXJpc2RpY3Rpb24sIFBhZ2luYXRpb25NZXRhZGF0YSwgU2VhcmNoUmVzdWx0VmlldywgU2VhcmNoUmVzdWx0Vmlld0NvbHVtbixcbiAgU2VhcmNoUmVzdWx0Vmlld0l0ZW0sIFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvciwgU29ydE9yZGVyLCBTb3J0UGFyYW1ldGVycyB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlUmVmZXJlbmNlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgQnJvd3NlclNlcnZpY2UsIFNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnksIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXNlYXJjaC1yZXN1bHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9KVVJJU0RJQ1RJT04gPSAnanVyaXNkaWN0aW9uJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX1RZUEUgPSAnY2FzZS10eXBlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX1NUQVRFID0gJ2Nhc2Utc3RhdGUnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgUEFHSU5BVElPTl9NQVhfSVRFTV9SRVNVTFQgPSAxMDAwMDtcblxuICBwdWJsaWMgSUNPTiA9IERpc3BsYXlNb2RlLklDT047XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VMaW5rVXJsVGVtcGxhdGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMganVyaXNkaWN0aW9uOiBKdXJpc2RpY3Rpb247XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VUeXBlOiBDYXNlVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2FzZVN0YXRlOiBDYXNlU3RhdGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWx0ZXJGRzogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXN1bHRWaWV3OiBTZWFyY2hSZXN1bHRWaWV3O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2luYXRpb25NZXRhZGF0YTogUGFnaW5hdGlvbk1ldGFkYXRhO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXRhZGF0YUZpZWxkczogc3RyaW5nW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd09ubHlTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwcmVTZWxlY3RlZENhc2VzOiBTZWFyY2hSZXN1bHRWaWV3SXRlbVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbnN1bWVyU29ydGluZ0VuYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoUmVzdWx0Vmlld0l0ZW1bXT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNoYW5nZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xpY2tDYXNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNvcnRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcGFnaW5hdGlvbkxpbWl0RW5mb3JjZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcGFnaW5hdGlvblBhZ2VTaXplOiBudW1iZXI7XG5cbiAgcHVibGljIGhpZGVSb3dzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBzZWxlY3RlZDoge1xuICAgIGluaXQ/OiBib29sZWFuLFxuICAgIGp1cmlzZGljdGlvbj86IEp1cmlzZGljdGlvbixcbiAgICBjYXNlVHlwZT86IENhc2VUeXBlLFxuICAgIGNhc2VTdGF0ZT86IENhc2VTdGF0ZSxcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXAsXG4gICAgbWV0YWRhdGFGaWVsZHM/OiBzdHJpbmdbXSxcbiAgICBwYWdlPzogbnVtYmVyXG4gIH0gPSB7fTtcblxuICBwdWJsaWMgc29ydFBhcmFtZXRlcnM6IFNvcnRQYXJhbWV0ZXJzO1xuICBwdWJsaWMgc2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeTogU2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeTtcbiAgcHVibGljIGRyYWZ0c0NvdW50OiBudW1iZXI7XG5cbiAgcHVibGljIGNvbnN1bWVyU29ydFBhcmFtZXRlcnM6IHsgY29sdW1uOiBzdHJpbmcsIG9yZGVyOiBTb3J0T3JkZXIsIHR5cGU6IHN0cmluZyB9ID0geyBjb2x1bW46IG51bGwsIG9yZGVyOiBudWxsLCB0eXBlOiBudWxsIH07XG5cbiAgcHVibGljIHNlbGVjdGVkQ2FzZXM6IFNlYXJjaFJlc3VsdFZpZXdJdGVtW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5OiBTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5LFxuICAgIGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpdml0eVNlcnZpY2U6IEFjdGl2aXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VSZWZlcmVuY2VQaXBlOiBDYXNlUmVmZXJlbmNlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlaG9sZGVyU2VydmljZTogUGxhY2Vob2xkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJvd3NlclNlcnZpY2U6IEJyb3dzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3JGYWN0b3J5ID0gc2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yRmFjdG9yeTtcbiAgICB0aGlzLnBhZ2luYXRpb25QYWdlU2l6ZSA9IGFwcENvbmZpZy5nZXRQYWdpbmF0aW9uUGFnZVNpemUoKTtcbiAgICB0aGlzLmhpZGVSb3dzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJlU2VsZWN0ZWRDYXNlcykge1xuICAgICAgZm9yIChjb25zdCBwcmVTZWxlY3RlZENhc2Ugb2YgdGhpcy5wcmVTZWxlY3RlZENhc2VzKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FzZXMgJiYgIXRoaXMuc2VsZWN0ZWRDYXNlcy5zb21lKGFDYXNlID0+IGFDYXNlLmNhc2VfaWQgPT09IHByZVNlbGVjdGVkQ2FzZS5jYXNlX2lkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5wdXNoKHByZVNlbGVjdGVkQ2FzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5lbWl0KHRoaXMuc2VsZWN0ZWRDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgaWYgKGNoYW5nZXNbJ3Jlc3VsdFZpZXcnXSkge1xuICAgICAgdGhpcy5oaWRlUm93cyA9IGZhbHNlO1xuXG4gICAgICB0aGlzLnNvcnRQYXJhbWV0ZXJzID0gdW5kZWZpbmVkO1xuICAgICAgLy8gQ2xvbmUgYHJlc3VsdFZpZXdgIHRvIHByZXZlbnQgc29ydGluZyB0aGUgZXh0ZXJuYWwgdmFyaWFibGVcbiAgICAgIHRoaXMucmVzdWx0VmlldyA9IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5yZXN1bHRWaWV3LmNvbHVtbnMuc2xpY2UoMCksXG4gICAgICAgIHJlc3VsdHM6IHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLnNsaWNlKDApLFxuICAgICAgICBoYXNEcmFmdHM6IHRoaXMucmVzdWx0Vmlldy5oYXNEcmFmdHNcbiAgICAgIH07XG5cbiAgICAgIHRoaXMucmVzdWx0Vmlldy5jb2x1bW5zID0gdGhpcy5yZXN1bHRWaWV3LmNvbHVtbnMuc29ydCgoYTogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbiwgYjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbikgPT4ge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5oeWRyYXRlUmVzdWx0VmlldygpO1xuICAgICAgdGhpcy5kcmFmdHNDb3VudCA9IHRoaXMuZHJhZnRzQ291bnQgPyB0aGlzLmRyYWZ0c0NvdW50IDogdGhpcy5udW1iZXJPZkRyYWZ0cygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sncGFnZSddKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLnBhZ2UgPSAoY2hhbmdlc1sncGFnZSddKS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCByZXN1bHRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5wYWdpbmF0aW9uTWV0YWRhdGEudG90YWxfcmVzdWx0c19jb3VudDtcbiAgICBjb25zdCBtYXhpbXVtUmVzdWx0UmVhY2hlZCA9IHRvdGFsID49IHRoaXMuUEFHSU5BVElPTl9NQVhfSVRFTV9SRVNVTFQ7XG4gICAgdGhpcy5wYWdpbmF0aW9uTGltaXRFbmZvcmNlZCA9IG1heGltdW1SZXN1bHRSZWFjaGVkO1xuXG4gICAgcmV0dXJuIG1heGltdW1SZXN1bHRSZWFjaGVkID8gdGhpcy5QQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA6IHRvdGFsO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXNlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0aW9uLmVtaXQodGhpcy5zZWxlY3RlZENhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5CZVNoYXJlZChjYXNlVmlldzogU2VhcmNoUmVzdWx0Vmlld0l0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZVZpZXcuc3VwcGxlbWVudGFyeV9kYXRhICYmIGNhc2VWaWV3LnN1cHBsZW1lbnRhcnlfZGF0YS5oYXNPd25Qcm9wZXJ0eSgnb3Jnc19hc3NpZ25lZF91c2VycycpO1xuICB9XG5cbiAgcHVibGljIGNhbkFueUJlU2hhcmVkKCk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jYW5CZVNoYXJlZCh0aGlzLnJlc3VsdFZpZXcucmVzdWx0c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWxsT25QYWdlU2VsZWN0ZWQoKSkge1xuICAgICAgLy8gYWxsIGNhc2VzIGFscmVhZHkgc2VsZWN0ZWQsIHNvIHVuc2VsZWN0IGFsbCBvbiB0aGlzIHBhZ2VcbiAgICAgIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmZvckVhY2goYyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5mb3JFYWNoKChzLCBpKSA9PiB7XG4gICAgICAgICAgaWYgKGMuY2FzZV9pZCA9PT0gcy5jYXNlX2lkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoYykgJiYgdGhpcy5jYW5CZVNoYXJlZChjKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5wdXNoKGMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVNlbGVjdGlvbihjOiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoYykpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5mb3JFYWNoKChzLCBpKSA9PiB7XG4gICAgICAgIGlmIChjLmNhc2VfaWQgPT09IHMuY2FzZV9pZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jYW5CZVNoYXJlZChjKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMucHVzaChjKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQoYzogU2VhcmNoUmVzdWx0Vmlld0l0ZW0pOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMuc2VsZWN0ZWRDYXNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChjLmNhc2VfaWQgPT09IHRoaXMuc2VsZWN0ZWRDYXNlc1tpXS5jYXNlX2lkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYWxsT25QYWdlU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgbGV0IGNhbkJlU2hhcmVkQ291bnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCByID0gdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHNbaV07XG4gICAgICBpZiAodGhpcy5jYW5CZVNoYXJlZChyKSkge1xuICAgICAgICBjYW5CZVNoYXJlZENvdW50ICsrO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQocikgJiYgdGhpcy5jYW5CZVNoYXJlZChyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjYW5CZVNoYXJlZENvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEh5ZHJhdGVzIHJlc3VsdCB2aWV3IHdpdGggY2FzZSBmaWVsZCBkZWZpbml0aW9ucy5cbiAgICovXG4gIC8vIEEgbG9uZ2VyIHRlcm0gcmVzb2x1dGlvbiBpcyB0byBtb3ZlIHRoaXMgcGllY2Ugb2YgbG9naWMgdG8gdGhlIGJhY2tlbmRcbiAgcHVibGljIGh5ZHJhdGVSZXN1bHRWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZHMgPSBbXTtcblxuICAgICAgT2JqZWN0LmtleXMocmVzdWx0LmNhc2VfZmllbGRzKS5mb3JFYWNoKGZpZWxkSWQgPT4ge1xuXG4gICAgICAgIGNvbnN0IGZpZWxkID0gcmVzdWx0LmNhc2VfZmllbGRzW2ZpZWxkSWRdO1xuXG4gICAgICAgIGNhc2VGaWVsZHMucHVzaChPYmplY3QuYXNzaWduKG5ldyBDYXNlRmllbGQoKSwge1xuICAgICAgICAgIGlkOiBmaWVsZElkLFxuICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgIGZpZWxkX3R5cGU6IHt9LFxuICAgICAgICAgIHZhbHVlOiBmaWVsZCxcbiAgICAgICAgICBkaXNwbGF5X2NvbnRleHQ6IG51bGwsXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuaHlkcmF0ZWRfY2FzZV9maWVsZHMgPSBjYXNlRmllbGRzO1xuICAgICAgcmVzdWx0LmNvbHVtbnMgPSB7fTtcblxuICAgICAgdGhpcy5yZXN1bHRWaWV3LmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICByZXN1bHQuY29sdW1uc1tjb2wuY2FzZV9maWVsZF9pZF0gPSB0aGlzLmJ1aWxkQ2FzZUZpZWxkKGNvbCwgcmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgZ29Ub1BhZ2UocGFnZSk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVJvd3MgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWQuaW5pdCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gdGhpcy5qdXJpc2RpY3Rpb247XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHRoaXMuY2FzZVR5cGU7XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSB0aGlzLmNhc2VTdGF0ZTtcbiAgICB0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cCA9IHRoaXMuY2FzZUZpbHRlckZHO1xuICAgIHRoaXMuc2VsZWN0ZWQubWV0YWRhdGFGaWVsZHMgPSB0aGlzLm1ldGFkYXRhRmllbGRzO1xuICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IHBhZ2U7XG4gICAgLy8gQXBwbHkgZmlsdGVyc1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgcXVlcnlQYXJhbXNbU2VhcmNoUmVzdWx0Q29tcG9uZW50LlBBUkFNX0pVUklTRElDVElPTl0gPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiA/IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmlkIDogbnVsbDtcbiAgICBxdWVyeVBhcmFtc1tTZWFyY2hSZXN1bHRDb21wb25lbnQuUEFSQU1fQ0FTRV9UWVBFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPyB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkIDogbnVsbDtcbiAgICBxdWVyeVBhcmFtc1tTZWFyY2hSZXN1bHRDb21wb25lbnQuUEFSQU1fQ0FTRV9TVEFURV0gPSB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA/IHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlLmlkIDogbnVsbDtcbiAgICB0aGlzLmNoYW5nZVBhZ2UuZW1pdCh7XG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgIHF1ZXJ5UGFyYW1zXG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3BDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wJyk7XG4gICAgaWYgKHRvcENvbnRhaW5lcikge1xuICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIH1cbiAgICAgIHRvcENvbnRhaW5lci5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBidWlsZENhc2VGaWVsZChjb2w6IFNlYXJjaFJlc3VsdFZpZXdDb2x1bW4sIHJlc3VsdDogU2VhcmNoUmVzdWx0Vmlld0l0ZW0pOiBDYXNlRmllbGQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBDYXNlRmllbGQoKSwge1xuICAgICAgaWQ6IGNvbC5jYXNlX2ZpZWxkX2lkLFxuICAgICAgbGFiZWw6IGNvbC5sYWJlbCxcbiAgICAgIGZpZWxkX3R5cGU6IGNvbC5jYXNlX2ZpZWxkX3R5cGUsXG4gICAgICB2YWx1ZTogcmVzdWx0LmNhc2VfZmllbGRzW2NvbC5jYXNlX2ZpZWxkX2lkXSxcbiAgICAgIGRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXI6IGNvbC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLFxuICAgICAgZGlzcGxheV9jb250ZXh0OiBjb2wuZGlzcGxheV9jb250ZXh0LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbnNXaXRoUHJlZml4KGNvbDogQ2FzZUZpZWxkLCByZXN1bHQ6IFNlYXJjaFJlc3VsdFZpZXdJdGVtKTogQ2FzZUZpZWxkIHtcbiAgICBjb2wudmFsdWUgPSB0aGlzLmRyYWZ0UHJlZml4T3JHZXQoY29sLCByZXN1bHQpO1xuICAgIGNvbC52YWx1ZSA9IHRoaXMucGxhY2Vob2xkZXJTZXJ2aWNlLnJlc29sdmVQbGFjZWhvbGRlcnMocmVzdWx0LmNhc2VfZmllbGRzLCBjb2wudmFsdWUpO1xuICAgIHJldHVybiBjb2w7XG4gIH1cblxuICBwdWJsaWMgaGFzUmVzdWx0cygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5sZW5ndGggJiYgdGhpcy5wYWdpbmF0aW9uTWV0YWRhdGEudG90YWxfcGFnZXNfY291bnQ7XG4gIH1cblxuICBwdWJsaWMgaGFzRHJhZnRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFZpZXcuaGFzRHJhZnRzKCk7XG4gIH1cblxuICBwdWJsaWMgY29tcGFyYXRvcihjb2x1bW46IFNlYXJjaFJlc3VsdFZpZXdDb2x1bW4pOiBTZWFyY2hSZXN1bHRWaWV3SXRlbUNvbXBhcmF0b3Ige1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFJlc3VsdFZpZXdJdGVtQ29tcGFyYXRvckZhY3RvcnkuY3JlYXRlU2VhcmNoUmVzdWx0Vmlld0l0ZW1Db21wYXJhdG9yKGNvbHVtbik7XG4gIH1cblxuICBwdWJsaWMgc29ydChjb2x1bW46IFNlYXJjaFJlc3VsdFZpZXdDb2x1bW4pIHtcbiAgICBpZiAodGhpcy5jb25zdW1lclNvcnRpbmdFbmFibGVkKSB7XG4gICAgICBpZiAoY29sdW1uLmNhc2VfZmllbGRfaWQgIT09IHRoaXMuY29uc3VtZXJTb3J0UGFyYW1ldGVycy5jb2x1bW4pIHtcbiAgICAgICAgdGhpcy5jb25zdW1lclNvcnRQYXJhbWV0ZXJzLm9yZGVyID0gU29ydE9yZGVyLkRFU0NFTkRJTkc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMub3JkZXIgPSB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMub3JkZXIgPT09IFNvcnRPcmRlci5ERVNDRU5ESU5HID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydE9yZGVyLkFTQ0VORElORyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRPcmRlci5ERVNDRU5ESU5HO1xuICAgICAgfVxuICAgICAgdGhpcy5jb25zdW1lclNvcnRQYXJhbWV0ZXJzLmNvbHVtbiA9IGNvbHVtbi5jYXNlX2ZpZWxkX2lkO1xuICAgICAgdGhpcy5jb25zdW1lclNvcnRQYXJhbWV0ZXJzLnR5cGUgPSBjb2x1bW4uY2FzZV9maWVsZF90eXBlLnR5cGU7XG4gICAgICB0aGlzLnNvcnRIYW5kbGVyLmVtaXQodGhpcy5jb25zdW1lclNvcnRQYXJhbWV0ZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY29tcGFyYXRvcihjb2x1bW4pID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU29ydEFzY2VuZGluZyhjb2x1bW4pKSB7XG4gICAgICAgIHRoaXMuc29ydFBhcmFtZXRlcnMgPSBuZXcgU29ydFBhcmFtZXRlcnModGhpcy5jb21wYXJhdG9yKGNvbHVtbiksIFNvcnRPcmRlci5BU0NFTkRJTkcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3J0UGFyYW1ldGVycyA9IG5ldyBTb3J0UGFyYW1ldGVycyh0aGlzLmNvbXBhcmF0b3IoY29sdW1uKSwgU29ydE9yZGVyLkRFU0NFTkRJTkcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0V2lkZ2V0KGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbikge1xuICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jb25zdW1lclNvcnRpbmdFbmFibGVkKSB7XG4gICAgICBjb25zdCBpc0NvbHVtbiA9IGNvbHVtbi5jYXNlX2ZpZWxkX2lkID09PSB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMuY29sdW1uO1xuICAgICAgY29uc3QgaXNBc2NlbmRpbmcgPSB0aGlzLmNvbnN1bWVyU29ydFBhcmFtZXRlcnMub3JkZXIgPT09IFNvcnRPcmRlci5BU0NFTkRJTkc7XG4gICAgICBjb25kaXRpb24gPSAhaXNDb2x1bW4gfHwgKGlzQ29sdW1uICYmIGlzQXNjZW5kaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZGl0aW9uID0gdGhpcy5pc1NvcnRBc2NlbmRpbmcoY29sdW1uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZGl0aW9uID8gJyYjOTY2MDsnIDogJyYjOTY1MDsnO1xuICB9XG5cbiAgcHVibGljIGFjdGl2aXR5RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuaXNFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIGh5cGhlbmF0ZUlmQ2FzZVJlZmVyZW5jZU9yR2V0KGNvbCwgcmVzdWx0KTogYW55IHtcbiAgICBpZiAoY29sLmNhc2VfZmllbGRfaWQgPT09ICdbQ0FTRV9SRUZFUkVOQ0VdJykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FzZVJlZmVyZW5jZVBpcGUudHJhbnNmb3JtKHJlc3VsdC5jYXNlX2ZpZWxkc1tjb2wuY2FzZV9maWVsZF9pZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29sLmlkKSB7XG4gICAgICAgIGlmIChjb2wuaWQgPT09ICdbQ0FTRV9SRUZFUkVOQ0VdJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNhc2VSZWZlcmVuY2VQaXBlLnRyYW5zZm9ybShyZXN1bHQuY2FzZV9maWVsZHNbY29sLmlkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5jYXNlX2ZpZWxkc1tjb2wuaWRdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0LmNhc2VfZmllbGRzW2NvbC5jYXNlX2ZpZWxkX2lkXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZHJhZnRQcmVmaXhPckdldChjb2wsIHJlc3VsdCk6IGFueSB7XG4gICAgcmV0dXJuIHJlc3VsdC5jYXNlX2lkLnN0YXJ0c1dpdGgoRFJBRlRfUFJFRklYKSA/IERSQUZUX1BSRUZJWCA6IHRoaXMuaHlwaGVuYXRlSWZDYXNlUmVmZXJlbmNlT3JHZXQoY29sLCByZXN1bHQpO1xuICB9XG5cbiAgcHVibGljIGlzU29ydEFzY2VuZGluZyhjb2x1bW46IFNlYXJjaFJlc3VsdFZpZXdDb2x1bW4pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50U29ydE9yZGVyID0gdGhpcy5jdXJyZW50U29ydE9yZGVyKGNvbHVtbik7XG5cbiAgICByZXR1cm4gY3VycmVudFNvcnRPcmRlciA9PT0gU29ydE9yZGVyLlVOU09SVEVEIHx8IGN1cnJlbnRTb3J0T3JkZXIgPT09IFNvcnRPcmRlci5ERVNDRU5ESU5HO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50U29ydE9yZGVyKGNvbHVtbjogU2VhcmNoUmVzdWx0Vmlld0NvbHVtbik6IFNvcnRPcmRlciB7XG5cbiAgICBsZXQgaXNBc2NlbmRpbmcgPSB0cnVlO1xuICAgIGxldCBpc0Rlc2NlbmRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuY29tcGFyYXRvcihjb2x1bW4pID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBTb3J0T3JkZXIuVU5TT1JURUQ7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCBjb21wYXJpc29uID0gdGhpcy5jb21wYXJhdG9yKGNvbHVtbikuY29tcGFyZSh0aGlzLnJlc3VsdFZpZXcucmVzdWx0c1tpXSwgdGhpcy5yZXN1bHRWaWV3LnJlc3VsdHNbaSArIDFdKTtcbiAgICAgIGlzRGVzY2VuZGluZyA9IGlzRGVzY2VuZGluZyAmJiBjb21wYXJpc29uIDw9IDA7XG4gICAgICBpc0FzY2VuZGluZyA9IGlzQXNjZW5kaW5nICYmIGNvbXBhcmlzb24gPj0gMDtcbiAgICAgIGlmICghaXNBc2NlbmRpbmcgJiYgIWlzRGVzY2VuZGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzQXNjZW5kaW5nID8gU29ydE9yZGVyLkFTQ0VORElORyA6IGlzRGVzY2VuZGluZyA/IFNvcnRPcmRlci5ERVNDRU5ESU5HIDogU29ydE9yZGVyLlVOU09SVEVEO1xuICB9XG5cbiAgcHVibGljIGdldEZpcnN0UmVzdWx0KCk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSAodGhpcy5zZWxlY3RlZC5wYWdlID8gdGhpcy5zZWxlY3RlZC5wYWdlIDogMSk7XG4gICAgcmV0dXJuICgoY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvblBhZ2VTaXplKSArIDEgKyB0aGlzLmdldERyYWZ0c0NvdW50SWZOb3RQYWdlT25lKGN1cnJlbnRQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0UmVzdWx0KCk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSAodGhpcy5zZWxlY3RlZC5wYWdlID8gdGhpcy5zZWxlY3RlZC5wYWdlIDogMSk7XG4gICAgcmV0dXJuICgoY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvblBhZ2VTaXplKSArIHRoaXMucmVzdWx0Vmlldy5yZXN1bHRzLmxlbmd0aCArIHRoaXMuZ2V0RHJhZnRzQ291bnRJZk5vdFBhZ2VPbmUoY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldFRvdGFsUmVzdWx0cygpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5wYWdpbmF0aW9uTWV0YWRhdGEudG90YWxfcmVzdWx0c19jb3VudCArIHRoaXMuZHJhZnRzQ291bnQ7XG5cbiAgICByZXR1cm4gdG90YWwgPj0gdGhpcy5QQUdJTkFUSU9OX01BWF9JVEVNX1JFU1VMVCA/IHRoaXMuUEFHSU5BVElPTl9NQVhfSVRFTV9SRVNVTFQgOiB0b3RhbDtcbiAgfVxuXG4gIHB1YmxpYyBwcmVwYXJlQ2FzZUxpbmtVcmwoY2FzZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB1cmwgPSB0aGlzLmNhc2VMaW5rVXJsVGVtcGxhdGU7XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoJ2p1cmlzZGljdGlvbl9pZCcsIHRoaXMuanVyaXNkaWN0aW9uLmlkKTtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgnY2FzZVR5cGVfaWQnLCB0aGlzLmNhc2VUeXBlLmlkKTtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgnY2FzZV9pZCcsIGNhc2VJZCk7XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFmdHNDb3VudElmTm90UGFnZU9uZShjdXJyZW50UGFnZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGN1cnJlbnRQYWdlID4gMSA/IHRoaXMuZHJhZnRzQ291bnQgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBudW1iZXJPZkRyYWZ0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFZpZXcucmVzdWx0cy5maWx0ZXIoXyA9PiBfLmNhc2VfaWQuc3RhcnRzV2l0aChEUkFGVF9QUkVGSVgpKS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ29Ub0Nhc2UoY2FzZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaWNrQ2FzZS5lbWl0KHtcbiAgICAgIGNhc2VJZFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjOiBTZWFyY2hSZXN1bHRWaWV3SXRlbSk6IHZvaWQge1xuICAgIGlmICgkZXZlbnQua2V5ID09PSAnU3BhY2UnKSB7XG4gICAgICBpZiAodGhpcy5icm93c2VyU2VydmljZS5pc0ZpcmVmb3ggfHwgdGhpcy5icm93c2VyU2VydmljZS5pc1NhZmFyaSB8fCB0aGlzLmJyb3dzZXJTZXJ2aWNlLmlzSUVPckVkZ2UpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb24oYyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8dGFibGUgKm5nSWY9XCJoYXNSZXN1bHRzKCkgfHwgaGFzRHJhZnRzKClcIj5cbiAgPGNhcHRpb24+XG4gICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiIGlkPVwic2VhcmNoLXJlc3VsdC1oZWFkaW5nX190ZXh0XCIgdGFiaW5kZXg9XCItMVwiPnt7IChjYXNlU3RhdGUgPyAnWW91ciBjYXNlcycgOiAnU2VhcmNoIHJlc3VsdCcpIHwgcnB4VHJhbnNsYXRlfX08L2gyPlxuXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dCBwYWdpbmF0aW9uLWxpbWl0LXdhcm5pbmdcIiAqbmdJZj1cInBhZ2luYXRpb25MaW1pdEVuZm9yY2VkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19hc3Npc3RpdmVcIj57eydXYXJuaW5nJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICB7eydUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzdWx0IHNldCBpcycgfCBycHhUcmFuc2xhdGV9fSB7e3BhZ2luYXRpb25NZXRhZGF0YS50b3RhbF9yZXN1bHRzX2NvdW50IHwgbnVtYmVyfX0uIHt7J09ubHkgdGhlIGZpcnN0IDEwLDAwMCByZWNvcmRzIGFyZSBhdmFpbGFibGUgZm9yIGRpc3BsYXkuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIoaGFzUmVzdWx0cygpIHx8IGhhc0RyYWZ0cygpKVwiIGNsYXNzPVwicGFnaW5hdGlvbi10b3BcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldFRvdGFsUmVzdWx0cygpICsgJyByZXN1bHRzIGhhdmUgYmVlbiBmb3VuZCcgfCBycHhUcmFuc2xhdGVcIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiBpZD1cInNlYXJjaC1yZXN1bHQtc3VtbWFyeV9fdGV4dFwiPnt7J1Nob3dpbmcnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBnZXRGaXJzdFJlc3VsdCgpIH19PC9zcGFuPlxuICAgICAgICB7eyd0bycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7IGdldExhc3RSZXN1bHQoKSB9fTwvc3Bhbj5cbiAgICAgICAge3snb2YnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIj57eyBnZXRUb3RhbFJlc3VsdHMoKSB9fTwvc3Bhbj4ge3sncmVzdWx0cycgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiKGhhc1Jlc3VsdHMoKSB8fCBoYXNEcmFmdHMoKSkgJiYgc2VsZWN0aW9uRW5hYmxlZFwiIGNsYXNzPVwicmVzZXQtc2VsZWN0aW9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXNldCBzZWxlY3Rpb24nIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICA8c3Bhbj48YSBjbGFzcz1cInNlYXJjaC1yZXN1bHQtcmVzZXQtbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb24oKVwiPnt7J1Jlc2V0IGNhc2Ugc2VsZWN0aW9uJyB8IHJweFRyYW5zbGF0ZX19PC9hPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9jYXB0aW9uPlxuICA8dGhlYWQ+XG4gICAgPHRyIHNjb3BlPVwicm93XCI+XG4gICAgICA8dGggKm5nSWY9XCJzZWxlY3Rpb25FbmFibGVkXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2hlY2tib3hcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgaWQ9XCJzZWxlY3QtYWxsXCIgbmFtZT1cInNlbGVjdC1hbGxcIiB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cInNlbGVjdEFsbCgpXCIgW2NoZWNrZWRdPVwiYWxsT25QYWdlU2VsZWN0ZWQoKVwiIFtkaXNhYmxlZF09XCIhY2FuQW55QmVTaGFyZWQoKVwiIC8+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIiBmb3I9XCJzZWxlY3QtYWxsXCI+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RoPlxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgcmVzdWx0Vmlldy5jb2x1bW5zXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInNlYXJjaC1yZXN1bHQtY29sdW1uLWhlYWRlclwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoJ1NvcnQgYnkgJyArIGNvbC5sYWJlbCArICcgJyArIGlzU29ydEFzY2VuZGluZyhjb2wpPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJykgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1sYWJlbFwiIChjbGljayk9XCJzb3J0KGNvbClcIj5cbiAgICAgICAgICAgICAgICB7e2NvbC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29tcGFyYXRvcihjb2wpXCIgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1zb3J0XCI+XG4gICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNvcnQoY29sKVwiIGNsYXNzPVwic29ydC13aWRnZXRcIiBbaW5uZXJIVE1MXT1cInNvcnRXaWRnZXQoY29sKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj48L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC90aD5cbiAgICAgIDx0aCAqbmdJZj1cImFjdGl2aXR5RW5hYmxlZCgpXCIgc3R5bGU9XCJ3aWR0aDogMTEwcHg7XCI+PC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuXG4gIDx0Ym9keT5cbiAgICA8IS0tIHNvcnRlZCBieSBjb25zdW1lciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uc3VtZXJTb3J0aW5nRW5hYmxlZFwiPlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCByZXN1bHQgb2YgcmVzdWx0Vmlldy5yZXN1bHRzIHwgcGFnaW5hdGU6IHsgaXRlbXNQZXJQYWdlOiBwYWdpbmF0aW9uUGFnZVNpemUsIGN1cnJlbnRQYWdlOiBzZWxlY3RlZC5wYWdlLCB0b3RhbEl0ZW1zOiByZXN1bHRUb3RhbCB9XCI+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGlvbkVuYWJsZWRcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19jaGVja2JveFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgaWQ9XCJzZWxlY3Qte3sgcmVzdWx0LmNhc2VfaWQgfX1cIiBuYW1lPVwic2VsZWN0LXt7IHJlc3VsdC5jYXNlX2lkIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJjaGFuZ2VTZWxlY3Rpb24ocmVzdWx0KVwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQocmVzdWx0KVwiIFtkaXNhYmxlZF09XCIhY2FuQmVTaGFyZWQocmVzdWx0KVwiIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiIGZvcj1cInNlbGVjdC17eyByZXN1bHQuY2FzZV9pZCB9fVwiPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwic2VhcmNoLXJlc3VsdC1jb2x1bW4tY2VsbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgcmVzdWx0Vmlldy5jb2x1bW5zOyBsZXQgY29sSW5kZXggPSBpbmRleFwiIHNjb3BlPVwicm93XCI+XG4gICAgICAgICAgPGEgKm5nSWY9XCJjb2xJbmRleCA9PSAwXCIgW3JvdXRlckxpbmtdPVwicHJlcGFyZUNhc2VMaW5rVXJsKHJlc3VsdC5jYXNlX2lkKVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJnbyB0byBjYXNlIHdpdGggQ2FzZSByZWZlcmVuY2U6e3sgcmVzdWx0LmNhc2VfaWQgfCBjY2RDYXNlUmVmZXJlbmNlIH19XCIgY2xhc3M9XCJnb3Z1ay1saW5rXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwidGV4dC0xNlwiICpuZ0lmPVwiIWhpZGVSb3dzXCI+XG4gICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCAqbmdJZj1cImRyYWZ0UHJlZml4T3JHZXQoY29sLCByZXN1bHQpOyBlbHNlIGNhc2VfcmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJnZXRDb2x1bW5zV2l0aFByZWZpeChyZXN1bHQuY29sdW1uc1tjb2wuY2FzZV9maWVsZF9pZF0sIHJlc3VsdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRGaWVsZHNdPVwicmVzdWx0Lmh5ZHJhdGVkX2Nhc2VfZmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50c1RvU3Vic3RpdHV0ZV09XCJbJ3ZhbHVlJ11cIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Nhc2VfcmVmZXJlbmNlPnt7cmVzdWx0LmNhc2VfaWQgfCBjY2RDYXNlUmVmZXJlbmNlfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2xJbmRleCAhPSAwXCIgY2xhc3M9XCJ0ZXh0LTE2XCIgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZVJvd3MgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiPlxuICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIGNjZExhYmVsU3Vic3RpdHV0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cInJlc3VsdC5jb2x1bW5zW2NvbC5jYXNlX2ZpZWxkX2lkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRGaWVsZHNdPVwicmVzdWx0Lmh5ZHJhdGVkX2Nhc2VfZmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudHNUb1N1YnN0aXR1dGVdPVwiWyd2YWx1ZSddXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICpuZ0lmPVwiYWN0aXZpdHlFbmFibGVkKClcIj5cbiAgICAgICAgICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cImhpZGVSb3dzID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICAgICAgICAgIDxjY2QtYWN0aXZpdHkgW2Nhc2VJZF09XCJyZXN1bHQuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJJQ09OXCI+PC9jY2QtYWN0aXZpdHk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gc29ydGVkIGJ5IHRvb2xraXQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb25zdW1lclNvcnRpbmdFbmFibGVkXCI+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHJlc3VsdCBvZiByZXN1bHRWaWV3LnJlc3VsdHMgfCBjY2RTb3J0U2VhcmNoUmVzdWx0IDogc29ydFBhcmFtZXRlcnMgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IHBhZ2luYXRpb25QYWdlU2l6ZSwgY3VycmVudFBhZ2U6IHNlbGVjdGVkLnBhZ2UsIHRvdGFsSXRlbXM6IHJlc3VsdFRvdGFsIH1cIj5cbiAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0aW9uRW5hYmxlZFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2NoZWNrYm94XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBpZD1cInNlbGVjdC17eyByZXN1bHQuY2FzZV9pZCB9fVwiIG5hbWU9XCJzZWxlY3Qte3sgcmVzdWx0LmNhc2VfaWQgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cImNoYW5nZVNlbGVjdGlvbihyZXN1bHQpXCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChyZXN1bHQpXCIgW2Rpc2FibGVkXT1cIiFjYW5CZVNoYXJlZChyZXN1bHQpXCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50LCByZXN1bHQpXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwic2VsZWN0LXt7IHJlc3VsdC5jYXNlX2lkIH19XCI+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWNvbHVtbi1jZWxsXCIgKm5nRm9yPVwibGV0IGNvbCBvZiByZXN1bHRWaWV3LmNvbHVtbnM7IGxldCBjb2xJbmRleCA9IGluZGV4XCIgc2NvcGU9XCJyb3dcIj5cblxuICAgICAgICAgIDxhICpuZ0lmPVwiY29sSW5kZXggPT0gMFwiIFtyb3V0ZXJMaW5rXT1cInByZXBhcmVDYXNlTGlua1VybChyZXN1bHQuY2FzZV9pZClcIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiZ28gdG8gY2FzZSB3aXRoIENhc2UgcmVmZXJlbmNlOnt7IHJlc3VsdC5jYXNlX2lkIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fVwiIGNsYXNzPVwiZ292dWstbGlua1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cInRleHQtMTZcIiAqbmdJZj1cIiFoaWRlUm93c1wiPlxuICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgKm5nSWY9XCJkcmFmdFByZWZpeE9yR2V0KGNvbCwgcmVzdWx0KTsgZWxzZSBjYXNlX3JlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZ2V0Q29sdW1uc1dpdGhQcmVmaXgocmVzdWx0LmNvbHVtbnNbY29sLmNhc2VfZmllbGRfaWRdLCByZXN1bHQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0RmllbGRzXT1cInJlc3VsdC5oeWRyYXRlZF9jYXNlX2ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVudHNUb1N1YnN0aXR1dGVdPVwiWyd2YWx1ZSddXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjYXNlX3JlZmVyZW5jZT57e3Jlc3VsdC5jYXNlX2lkIHwgY2NkQ2FzZVJlZmVyZW5jZX19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sSW5kZXggIT0gMFwiIGNsYXNzPVwidGV4dC0xNlwiIFtzdHlsZS52aXNpYmlsaXR5XT1cImhpZGVSb3dzID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBjY2RMYWJlbFN1YnN0aXR1dG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJyZXN1bHQuY29sdW1uc1tjb2wuY2FzZV9maWVsZF9pZF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0RmllbGRzXT1cInJlc3VsdC5oeWRyYXRlZF9jYXNlX2ZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRzVG9TdWJzdGl0dXRlXT1cIlsndmFsdWUnXVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCAqbmdJZj1cImFjdGl2aXR5RW5hYmxlZCgpXCI+XG4gICAgICAgICAgPGRpdiBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlUm93cyA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCI+XG4gICAgICAgICAgICA8Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwicmVzdWx0LmNhc2VfaWRcIiBbZGlzcGxheU1vZGVdPVwiSUNPTlwiPjwvY2NkLWFjdGl2aXR5PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPGNjZC1wYWdpbmF0aW9uXG4gICpuZ0lmPVwiaGFzUmVzdWx0cygpXCJcbiAgKHBhZ2VDaGFuZ2UpPVwiZ29Ub1BhZ2UoJGV2ZW50KVwiXG4gIFt2aXNpYmlsaXR5TGFiZWxdPVwiaGlkZVJvd3MgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gIFthdXRvSGlkZV09XCJ0cnVlXCJcbiAgW21heFNpemVdPVwiOFwiXG4gIFtzY3JlZW5SZWFkZXJQYWdpbmF0aW9uTGFiZWxdPVwiJ1BhZ2luYXRpb24nXCJcbiAgW3NjcmVlblJlYWRlclBhZ2VMYWJlbF09XCJwYWdlXCJcbiAgW3NjcmVlblJlYWRlckN1cnJlbnRMYWJlbF09XCInWW91XFwncmUgb24gcGFnZSdcIj48L2NjZC1wYWdpbmF0aW9uPlxuXG48ZGl2ICpuZ0lmPVwiIShoYXNSZXN1bHRzKCkgfHwgaGFzRHJhZnRzKCkpXCIgY2xhc3M9XCJub3RpZmljYXRpb25cIlxuW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInTm8gY2FzZXMgZm91bmQuIFRyeSB1c2luZyBkaWZmZXJlbnQgZmlsdGVycy4nIHwgcnB4VHJhbnNsYXRlXCI+XG57eydObyBjYXNlcyBmb3VuZC4gVHJ5IHVzaW5nIGRpZmZlcmVudCBmaWx0ZXJzLicgfCBycHhUcmFuc2xhdGV9fVxuPC9kaXY+XG4iXX0=
|