barsa-novin-ray-core 1.0.415 → 1.0.416
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/esm2020/lib/abstract-classes/models.mjs +1 -1
- package/esm2020/lib/dynamic-component/base-view-item-props.mjs +4 -2
- package/esm2020/lib/services/notification.service.mjs +8 -1
- package/esm2020/lib/services/portal.service.mjs +15 -4
- package/fesm2015/barsa-novin-ray-core.mjs +24 -4
- package/fesm2015/barsa-novin-ray-core.mjs.map +1 -1
- package/fesm2020/barsa-novin-ray-core.mjs +24 -4
- package/fesm2020/barsa-novin-ray-core.mjs.map +1 -1
- package/lib/abstract-classes/models.d.ts +1 -0
- package/lib/dynamic-component/base-view-item-props.d.ts +3 -2
- package/lib/services/notification.service.d.ts +7 -1
- package/lib/services/portal.service.d.ts +2 -2
- package/package.json +1 -1
|
@@ -181,4 +181,4 @@ export var SelectionMode;
|
|
|
181
181
|
SelectionMode["MULTIPLE"] = "multiple";
|
|
182
182
|
SelectionMode["NONE"] = "none";
|
|
183
183
|
})(SelectionMode || (SelectionMode = {}));
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sdUJBQXVCO0lBQXBDO1FBWUksY0FBUyxHQUFHLElBQUksQ0FBQztJQVdyQixDQUFDO0NBQUE7QUFTRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsdUJBQXVCO0NBU2xFO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtDQUVyRTtBQUNELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx1QkFBdUI7Q0FPbEU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBSWhFO0FBQ0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtDQVVoRTtBQUNELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFBdUI7Q0FLbkU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBQUc7QUFDcEUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtDQUl2RTtBQUNELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx1QkFBdUI7Q0FPakU7QUFNRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsdUJBQXVCO0NBR3hFO0FBQ0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDRCQUE0QjtDQUd4RTtBQUNELE1BQU0sT0FBTyxvQ0FBcUMsU0FBUSw0QkFBNEI7Q0FFckY7QUFDRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0NBSXpFO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtDQUd0RTtBQUNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7Q0FRaEU7QUFDRCxNQUFNLE9BQU8sYUFBYTtDQU16QjtBQUNELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx1QkFBdUI7Q0FNcEU7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QU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3JCLGtDQUFpQixDQUFBO0lBQ2pCLHNDQUFxQixDQUFBO0lBQ3JCLDhCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IERhdGVJbmZvIGFzIERhdGVJbmZvU2VydmljZSB9IGZyb20gJy4uL2RhdGUtc2VydmljZXMnO1xuXG5leHBvcnQgY2xhc3MgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBDb250cm9sRmllbGRDYXB0aW9uOiBzdHJpbmc7XG4gICAgQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQ6IHN0cmluZztcbiAgICBDb250cm9sRmllbGREZWZJZDogc3RyaW5nO1xuICAgIENvbnRyb2xOYW1lOiBzdHJpbmc7XG4gICAgUmVsYXRlZEZpZWxkTGlzdDogW107XG4gICAgSGlkZTogYm9vbGVhbjtcbiAgICB4dHlwZTogc3RyaW5nO1xuICAgIExhYmVsUG9zaXRpb246IHN0cmluZztcbiAgICBJc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgICBJc1Zpc2libGU6IGJvb2xlYW47XG4gICAgU2hvd0xhYmVsID0gdHJ1ZTtcbiAgICBJc1JlYWRPbmx5OiBib29sZWFuO1xuICAgIElzRW5hYmxlZDogYm9vbGVhbjtcbiAgICBJc0JvbGQ6IGJvb2xlYW47XG4gICAgSXNBdXRvbWF0aWM6IGJvb2xlYW47XG4gICAgSnNvbkV4dHJhUHJvcDogYW55IHwgbnVsbDtcbiAgICBDb21wb25lbnQ6IHN0cmluZztcbiAgICBJbmZvOiBDb250cm9sSW5mb1R5cGVzO1xuICAgIEZpZWxkSWNvbjogc3RyaW5nO1xuICAgIElzTHRyOiBib29sZWFuO1xuICAgIERpc3BsYXlUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBdHRhY2htZW50SW5mbyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIElkOiBzdHJpbmc7XG4gICAgSXNOZXc6IGJvb2xlYW47XG4gICAgSXNEZWxldGVkOiBib29sZWFuO1xuICAgIFR5cGU6IHN0cmluZztcbiAgICBGaWxlTmFtZT86IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBTdHJpbmdDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIE1heExlbmd0aDogbnVtYmVyO1xuICAgIE1pbkxlbmd0aDogbnVtYmVyO1xuICAgIFJlZ3VsYXJFeHByZXNzaW9uOiBzdHJpbmc7XG4gICAgSXNQYXNzd29yZDogYm9vbGVhbjtcbiAgICBJc011bHRpTGluZTogYm9vbGVhbjtcbiAgICBOdWxsVGV4dDogc3RyaW5nO1xuICAgIEFsbG93ZWRTdHJpbmdDaGFyczogc3RyaW5nO1xuICAgIE9ubHlBY2NlcHRDdXJyZW50Q3VsdHVyZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBSaWNoU3RyaW5nQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIFN0cmluZ0NvbnRyb2xJbmZvTW9kZWwge1xuICAgIElzSHRtbFZpZXdlcjogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBOdW1iZXJDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIE1pblZhbHVlOiBudW1iZXI7XG4gICAgTWF4VmFsdWU6IG51bWJlcjtcbiAgICBEZWNpbWFsUHJlY2lzaW9uOiBudW1iZXI7XG4gICAgU2hvd1Rob3VzYW5kU2VwZXJhdG9yOiBib29sZWFuO1xuICAgIE51bWJlclR5cGU6IHN0cmluZztcbiAgICBDdXJyZW5jeVN5bWJvbDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIEZpbGVQaWN0dXJlSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIEV4dDogc3RyaW5nO1xuICAgIEZpbGVJZDogc3RyaW5nO1xuICAgIElzRGVsZXRlZDogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBGaWxlQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBDYW5EZWxldGU6IGJvb2xlYW47XG4gICAgQ2FuU2F2ZTogYm9vbGVhbjtcbiAgICBDYW5WaWV3OiBib29sZWFuO1xuICAgIElzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgTWF4RmlsZUNvdW50OiBudW1iZXI7XG4gICAgTWF4RmlsZVNpemVLYjogbnVtYmVyO1xuICAgIE9mZmljZU9ubGluZTogYm9vbGVhbjtcbiAgICBWYWxpZEV4dGVuc2lvbnM6IHN0cmluZztcbiAgICBWaWV3VHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIENvbW1hbmRDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIE1lbnVOYW1lOiBzdHJpbmc7XG4gICAgRGlzYWJsZVdoZW5SZWFkb25seTogYm9vbGVhbjtcbiAgICBEaXNwbGF5VHlwZTogc3RyaW5nO1xuICAgIER5bmFtaWNDb21tYW5kOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgSWNvbkNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7fVxuZXhwb3J0IGNsYXNzIFBpY3R1cmVGaWxlQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBTaXplTW9kZTogbnVtYmVyO1xuICAgIE1heEZpbGVTaXplS2I6IG51bWJlcjtcbiAgICBWYWxpZEV4dGVuc2lvbnM6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBHYXVnZUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgSXNBdXRvbWF0aWM6IGJvb2xlYW47XG4gICAgTWF4VmFsdWU6IG51bWJlcjtcbiAgICBNYXhWYWx1ZTI6IG51bWJlcjtcbiAgICBNaW5WYWx1ZTogbnVtYmVyO1xuICAgIE1pblZhbHVlMjogbnVtYmVyO1xuICAgIFZhbHVlOiBudW1iZXI7XG59XG5leHBvcnQgdHlwZSBSZWxhdGlvbkxpc3RUeXBlcyA9XG4gICAgfCBSZWxhdGlvbkxpc3RDb250cm9sSW5mb01vZGVsXG4gICAgfCBIaXN0b3J5Q29udHJvbEluZm9Nb2RlbFxuICAgIHwgUmFiZXRlaEFrc2VUYWtpTGlzdGlDb250cm9sSW5mb01vZGVsXG4gICAgfCBTaW5nbGVSZWxhdGlvbkNvbnRyb2xJbmZvTW9kZWw7XG5leHBvcnQgY2xhc3MgUmVsYXRpb25MaXN0Q29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBSZWxhdGlvblZpZXdUeXBlOiBzdHJpbmc7XG4gICAgVWx2U2V0dGluZzogUmVwb3J0TW9kZWw7XG59XG5leHBvcnQgY2xhc3MgSGlzdG9yeUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBSZWxhdGlvbkxpc3RDb250cm9sSW5mb01vZGVsIHtcbiAgICBIYXNFeHRlcm5hbFBhcmFtZXRlcjogYm9vbGVhbjtcbiAgICBQYXJhbU5hbWUxOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUmFiZXRlaEFrc2VUYWtpTGlzdGlDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgUmVsYXRpb25MaXN0Q29udHJvbEluZm9Nb2RlbCB7XG4gICAgQXV0b1NhdmU7XG59XG5leHBvcnQgY2xhc3MgUmVsYXRlZFJlcG9ydENvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgSGFzRXh0ZXJuYWxQYXJhbWV0ZXI6IGJvb2xlYW47XG4gICAgUGFyYW1OYW1lMTogc3RyaW5nO1xuICAgIFVsdlNldHRpbmc6IFJlcG9ydE1vZGVsO1xufVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIEV4dHJhVGV4dDogc3RyaW5nO1xuICAgIFN1Z2dlc3Rpb25zOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgRW51bUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgSXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBTaG93QXNSYWRpb0J1dHRvbjogYm9vbGVhbjtcbiAgICBJY29uRGlzcGxheVR5cGU6IHN0cmluZztcbiAgICBEYXRhU291cmNlOiB7XG4gICAgICAgIFJvd3M6IFJvd0RhdGFPcHRpb25bXTtcbiAgICB9O1xuICAgIEVtcHR5Um93RGF0YTogUm93RGF0YU9wdGlvbjtcbn1cbmV4cG9ydCBjbGFzcyBSb3dEYXRhT3B0aW9uIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIElzRW1wdHk6IGJvb2xlYW47XG4gICAgdHh0OiBzdHJpbmc7XG4gICAgdHh0X3NhZmU/OiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIENhbGVuZGFyVHlwZTogc3RyaW5nO1xuICAgIERhdGVGb3JtYXQ6IHN0cmluZztcbiAgICBTaG93RGF0ZTE6IGJvb2xlYW47XG4gICAgU2hvd1RpbWUxOiBib29sZWFuO1xuICAgIFRpbWVGb3JtYXQ6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBCb29sQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBGYWxzZUNhcHRpb246IHN0cmluZztcbiAgICBUcnVlQ2FwdGlvbjogc3RyaW5nO1xuICAgIFRydWVJY29uOiBzdHJpbmc7XG4gICAgVmlld1R5cGU6IHN0cmluZztcbiAgICBGYWxzZUljb246IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIElubmVyQ3RybHI6IENvbnRyb2xJbmZvVHlwZXM7XG4gICAgRXhlY3V0YWlvblRpbWU6IHN0cmluZztcbiAgICBFZGl0VHlwZTogc3RyaW5nO1xuICAgIERvbnRTaG93UmVjYWxjdWxhdGVCdXR0b246IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgU3ViZm9ybUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgVHlwZURlZklkOiBhbnk7XG4gICAgVHlwZURlZkljb246IHN0cmluZztcbiAgICBJc0NvbXBvc2VkUmVsYXRpb246IHN0cmluZztcbiAgICBEcm9wRG93blJlcG9ydElkOiBzdHJpbmc7XG4gICAgVHlwZVZpZXdJZDogc3RyaW5nO1xuICAgIEZvcm1QYW5lbFNldHRpbmc6IEZvcm1TZXR0aW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZEZpbGVJbmZvIHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICBmaWxlVXJsOiBzdHJpbmc7XG4gICAgdmlld0luQnJvd3NlcjogYm9vbGVhbjtcbiAgICBjb252ZXJ0VG86IHN0cmluZztcbiAgICBpc09mZmljZU9ubGluZTogYm9vbGVhbjtcbiAgICBmb3JPY3g6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkRmlsZUluZm9SZXN1bHQge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgc3VjY2VlZDogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBMaW5lYXJMaXN0Q29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBEZWZhdWx0RmllbGQ6IHN0cmluZztcbiAgICBFeHRyYUpzb25Qcm9wRmllbGQ6IHN0cmluZztcbiAgICBGaWxsQmVmb3JlRHJvcERvd246IGJvb2xlYW47XG4gICAgSXNHZW5lcmFsSW5mbzogYm9vbGVhbjtcbiAgICBJc011bHRpU2VsZWN0OiBib29sZWFuO1xuICAgIFJlbGF0aW9uOiBMaXN0UmVsYXRpb25Nb2RlbDtcbiAgICBSZWxhdGlvblZpZXdUeXBlOiBzdHJpbmc7XG4gICAgUm93SWNvbjogc3RyaW5nO1xuICAgIFRhcmdldFR5cGVEZWZJZDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIExpc3RSZWxhdGlvbk1vZGVsIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgQ2hpbGRGZElkOiBzdHJpbmc7XG4gICAgQ2hpbGRGZE5hbWU6IHN0cmluZztcbiAgICBJc0F1dG9TYXZlOiBib29sZWFuO1xuICAgIFBhcmVudE1vSWQ6IHN0cmluZztcbiAgICBSZWxhdGlvblR5cGU6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBTaW5nbGVSZWxhdGlvbkNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgQ29sdW1uUmVxdWVzdEVudW06IHN0cmluZztcbiAgICBEcm9wRG93blJlcG9ydElkOiBzdHJpbmc7XG4gICAgRmlsbEJlZm9yZURyb3BEb3duOiBib29sZWFuO1xuICAgIEhpZGVDb21ibzogYm9vbGVhbjtcbiAgICBSZWxhdGlvblZpZXdUeXBlOiBzdHJpbmc7XG4gICAgUGFzc1BhcmVudEZvcm06IGJvb2xlYW47XG4gICAgU2hvd05ld0J1dHRvbjogYm9vbGVhbjtcbiAgICBTaG93T2tDYW5jZWw6IGJvb2xlYW47XG4gICAgVmlld1JlbGF0ZWRGb3JtVHlwZTogc3RyaW5nO1xuICAgIFRhcmdldFR5cGVEZWZJZDogc3RyaW5nO1xuICAgIERhdGFTb3VyY2U6IHtcbiAgICAgICAgUm93czogUm93RGF0YU9wdGlvbltdO1xuICAgIH07XG4gICAgUHJldmlld0ZpZWxkQ2FwdGlvbjogc3RyaW5nO1xuICAgIFByZXZpZXdGaWVsZElkOiBzdHJpbmc7XG4gICAgUHJldmlld0ZpZWxkTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDb250cm9sSW5mb1R5cGVzID1cbiAgICB8IFN1YmZvcm1Db250cm9sSW5mb01vZGVsXG4gICAgfCBDYWxjdWxhdGVDb250cm9sSW5mb01vZGVsXG4gICAgfCBCb29sQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgRW51bUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IEljb25Db250cm9sSW5mb01vZGVsXG4gICAgfCBGaWxlQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgRGF0ZVRpbWVDb250cm9sSW5mb01vZGVsXG4gICAgfCBOdW1iZXJDb250cm9sSW5mb01vZGVsXG4gICAgfCBTdHJpbmdDb250cm9sSW5mb01vZGVsXG4gICAgfCBQaWN0dXJlRmlsZUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IEdhdWdlQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgQ29tbWFuZENvbnRyb2xJbmZvTW9kZWxcbiAgICB8IENvZGVFZGl0b3JDb250cm9sSW5mb01vZGVsO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1WaWV3U2V0dGluZyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIExheW91dDk0OiBhbnk7XG4gICAgQ29udHJvbEluZm86IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW107XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZXR0aW5nIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgRGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIE1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIH07XG4gICAgVmlldzogRm9ybVZpZXdTZXR0aW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICRGaWVsZERpY3Q/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICRSZXBvcnRJZD86IHN0cmluZztcbiAgICAkVHlwZT86IHN0cmluZztcbiAgICAkU3R5bGVJbmRleD86IG51bWJlcltdO1xuICAgICRDYXB0aW9uOiBzdHJpbmc7XG4gICAgJEljb24/OiBzdHJpbmc7XG4gICAgJFN0YXRlPzogc3RyaW5nO1xuICAgICRUeXBlRGVmSWQ/OiBzdHJpbmc7XG4gICAgJFR5cGVEZWZOYW1lPzogc3RyaW5nO1xuICAgICRDaGlsZHJlbj86IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICBJbmhlcml0YW5jZUluZm8/OiB7XG4gICAgICAgIENoaWxkRmllbGROYW1lOiBzdHJpbmc7XG4gICAgICAgIFBhcmVudEZpZWxkTmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgSWQ6IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIENhbGVuZGFyTWV0YW9iamVjdERhdGFNb2RlbCBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgICRDb2xvcjogc3RyaW5nO1xuICAgICRNb21lbnRTdGFydERhdGU6IHN0cmluZztcbiAgICAkTW9tZW50RW5kRGF0ZTogc3RyaW5nO1xuICAgICRTdGFydFRpbWVzOiBzdHJpbmc7XG4gICAgJEVuZFRpbWVzOiBzdHJpbmc7XG4gICAgJFRpdGxlOiBzdHJpbmc7XG4gICAgJE5vdGVzOiBzdHJpbmc7XG4gICAgJFN0YXJ0RGF0ZUluZm8/OiBEYXRlSW5mb1NlcnZpY2U7XG4gICAgJEVuZERhdGVJbmZvPzogRGF0ZUluZm9TZXJ2aWNlO1xufVxuXG5leHBvcnQgY2xhc3MgTW9Gb3JSZXBvcnRNb2RlbCB7XG4gICAgJFR5cGU/OiBzdHJpbmc7XG4gICAgVHlwZURlZklkOiBzdHJpbmc7XG4gICAgUmVwb3J0SWQ6IHN0cmluZztcbiAgICBJY29uPzogc3RyaW5nO1xuICAgIE1vRGF0YUxpc3Q6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+O1xuICAgIERlbGV0ZWRMaXN0OiBBcnJheTx7IElkOiBzdHJpbmc7IFR5cGVEZWZJZDogc3RyaW5nIH0+O1xuICAgIEFkZGVkTGlzdDogQXJyYXk8eyBJZDogc3RyaW5nOyBUeXBlRGVmSWQ6IHN0cmluZyB9PjtcbiAgICBQYWdpbmc6IFBhZ2luZ1NldHRpbmc7XG4gICAgUmVsYXRpb24/OiB7XG4gICAgICAgIFJlbGF0aW9uVHlwZTogc3RyaW5nO1xuICAgICAgICBQYXJlbnRNb0lkOiBzdHJpbmc7XG4gICAgICAgIFBhcmVudEZkSWQ6IHN0cmluZztcbiAgICAgICAgQ2hpbGRGZElkOiBzdHJpbmc7XG4gICAgICAgIFBhcmVudEZkTmFtZTogc3RyaW5nO1xuICAgICAgICBDaGlsZEZkTmFtZTogc3RyaW5nO1xuICAgICAgICBQYXNzUGFyZW50TW9GaWVsZDogc3RyaW5nO1xuICAgICAgICBJc0F1dG9TYXZlOiBib29sZWFuO1xuICAgICAgICBJc0F1dG9TYXZlX1JlbG9hZFBhcmVudEZvcm1zOiBib29sZWFuO1xuICAgICAgICBJc0F1dG9TYXZlX1JlbG9hZFJvb3RQYXJlbnRMaXN0OiBib29sZWFuO1xuICAgIH07XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuRGVsZXRlZExpc3QgPSB0aGlzLkFkZGVkTGlzdCA9IHRoaXMuTW9EYXRhTGlzdCA9IFtdO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBSZXBvcnRCYXNlSW5mbyB7XG4gICAgSWQ6IHN0cmluZztcbiAgICBDYXB0aW9uOiBzdHJpbmc7XG4gICAgRm9sZGVySWQ6IHN0cmluZztcbiAgICBJY29uVXJsOiBzdHJpbmc7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFJlcG9ydElkOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUmVwb3J0RXh0cmFJbmZvIGV4dGVuZHMgUmVwb3J0QmFzZUluZm8ge1xuICAgIFR5cGVEZWZJZDogc3RyaW5nO1xuICAgIFR5cGVEZWZDYXB0aW9uOiBzdHJpbmc7XG4gICAgUmVwb3J0VHlwZTogc3RyaW5nO1xuICAgIEhpZGVUb29sYmFyOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0YW9iamVjdFJlbGF0aW9uTW9kZWwgZXh0ZW5kcyBMaXN0UmVsYXRpb25Nb2RlbCB7XG4gICAgUGFyZW50RmRJZDogc3RyaW5nO1xuICAgIFBhc3NQYXJlbnRNb0ZpZWxkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEZpZWxkSW5mb1R5cGVFbnVtIHtcbiAgICBJbnRJbmZvID0gMCxcbiAgICBTdHJpbmdJbmZvID0gMixcbiAgICBEYXRlSW5mbyA9IDMsXG4gICAgQm9vbEluZm8gPSA1LFxuICAgIEVudW1JbmZvID0gNixcbiAgICBVc2VySW5mbyA9IDcsXG4gICAgQ2F0ZWdvcnlJbmZvID0gOCxcbiAgICBNZXRhT2JqZWN0SW5mbyA9IDksXG4gICAgQ29tbWFuZEluZm8gPSAxMCwgLy8gMHgwMDAwMDAwQVxuICAgIFBpY3R1cmVzSW5mbyA9IDExLCAvLyAweDAwMDAwMDBCXG4gICAgUmVsYXRpb25JbmZvID0gMTIsIC8vIDB4MDAwMDAwMENcbiAgICBIaXN0b3J5SW5mbyA9IDEzLCAvLyAweDAwMDAwMDBEXG4gICAgUmVsYXRpb25JbmZvUmV2ZXJzZV9Ba3NMaXN0aSA9IDE0LCAvLyAweDAwMDAwMDBFXG4gICAgQ3JlYXRvclVzZXJJbmZvID0gMTUsIC8vIDB4MDAwMDAwMEZcbiAgICBDcmVhdGlvbkRhdGVJbmZvID0gMTYsIC8vIDB4MDAwMDAwMTBcbiAgICBMYXN0VXBkYXRlRGF0ZUluZm8gPSAxNywgLy8gMHgwMDAwMDAxMVxuICAgIFJlbWluZGVySW5mbyA9IDE4LCAvLyAweDAwMDAwMDEyXG4gICAgUmljaFN0cmluZ0luZm8gPSAxOSwgLy8gMHgwMDAwMDAxM1xuICAgIENvbnZlcnRDb21tYW5kSW5mbyA9IDIwLCAvLyAweDAwMDAwMDE0XG4gICAgUmVsYXRpb25JbmZvU2luZ2xlUmV2ZXJzZV9Ba3NUYWtpTGlzdGkgPSAyMSwgLy8gMHgwMDAwMDAxNVxuICAgIERpYWxDb21tYW5kSW5mbyA9IDIyLCAvLyAweDAwMDAwMDE2XG4gICAgRmluZENvbnRhY3RDb21tYW5kSW5mbyA9IDIzLCAvLyAweDAwMDAwMDE3XG4gICAgU2VxdWVuY2VDb21tYW5kSW5mbyA9IDI0LCAvLyAweDAwMDAwMDE4XG4gICAgQ3VycmVuY3lJbmZvID0gMjUsIC8vIDB4MDAwMDAwMTlcbiAgICBTaW5nbGVQaWN0dXJlSW5mbyA9IDI2LCAvLyAweDAwMDAwMDFBXG4gICAgV29yZFJlcG9ydENvbW1hbmRJbmZvID0gMjcsIC8vIDB4MDAwMDAwMUJcbiAgICBIaWVyYXJjaGljYWxJbmZvID0gMjgsIC8vIDB4MDAwMDAwMUNcbiAgICBUaW1lU3BhbkluZm8gPSAyOSwgLy8gMHgwMDAwMDAxRFxuICAgIFJlcG9ydEluZm8gPSAzMCwgLy8gMHgwMDAwMDAxRVxuICAgIEZpbGVJbmZvID0gMzEsIC8vIDB4MDAwMDAwMUZcbiAgICBXb3JkRmlsZUluZm8gPSAzMiwgLy8gMHgwMDAwMDAyMFxuICAgIFBpY3R1cmVGaWxlSW5mbyA9IDMzLCAvLyAweDAwMDAwMDIxXG4gICAgR2F1Z2VJbmZvID0gMzQsIC8vIDB4MDAwMDAwMjJcbiAgICBDb2RlSW5mbyA9IDM1LCAvLyAweDAwMDAwMDIzXG4gICAgV29ya0NlbnRlckluZm8gPSAzNiwgLy8gMHgwMDAwMDAyNFxuICAgIElzRGVsZXRlZEluZm8gPSAzNywgLy8gMHgwMDAwMDAyNVxuICAgIFJvd051bWJlckluZm8gPSAzOCwgLy8gMHgwMDAwMDAyNlxuICAgIEJpbmFyeUluZm8gPSAzOSwgLy8gMHgwMDAwMDAyN1xuICAgIFJldmVyc2VNZXRhT2JqZWN0SW5mb19Ba3NUYWtpVGFraSA9IDQwLCAvLyAweDAwMDAwMDI4XG4gICAgQ29sb3JJbmZvID0gNDEsIC8vIDB4MDAwMDAwMjlcbiAgICBJY29uSW5mbyA9IDQyLCAvLyAweDAwMDAwMDJBXG4gICAgUmVmcmVzaEZpZWxkQ29tbWFuZEluZm8gPSA0MywgLy8gMHgwMDAwMDAyQlxuICAgIFJlZmVyZW5jZUZpZWxkSW5mbyA9IDQ0LCAvLyAweDAwMDAwMDJDXG4gICAgU2VhcmNoQ29tbWFuZEluZm8gPSA0NSwgLy8gMHgwMDAwMDAyRFxuICAgIE9yZGVySW5mbyA9IDQ2IC8vIDB4MDAwMDAwMkVcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NOYW1lc01vZGVsIHtcbiAgICBDb21tYW5kQmFyQ2xhc3M6IHN0cmluZztcbiAgICBEYXRhQ2xhc3M6IHN0cmluZztcbiAgICBTZWxlY3Rpb25DbGFzczogc3RyaW5nO1xuICAgIFZpZXdlckNsYXNzOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhTW9kZWwge1xuICAgIEN1c3RvbUNvbW1hbmRzPzogQ3VzdG9tQ29tbWFuZFtdO1xuICAgIERlZmF1bHRDb21tYW5kc0FjY2Vzcz86IERlZmF1bHRDb21tYW5kc0FjY2VzcztcbiAgICBQYXJlbnRVbHZDb25maWc/OiBhbnk7XG4gICAgUmVsYXRpb24/OiBNZXRhb2JqZWN0UmVsYXRpb25Nb2RlbDtcbiAgICBSZXBvcnQ/OiBSZXBvcnRFeHRyYUluZm87XG4gICAgRXh0cmFKc29uUHJvcFJlcG9ydD86IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VSZXBvcnRNb2RlbCB7XG4gICAgQ2xhc3NOYW1lczogQ2xhc3NOYW1lc01vZGVsO1xuICAgIEV4dHJhOiBFeHRyYU1vZGVsO1xuICAgIFZpZXc6IFZpZXdUeXBlcztcbiAgICBTZWFyY2hQYW5lbDogYW55O1xuICAgIERlZmF1bHRJdGVtQ29tcG9uZW50ID0gJ1JlcG9ydERlZmF1bHRJdGVtQ29tcG9uZW50Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdENvbW1hbmRzQWNjZXNzIHtcbiAgICBBZGQ6IGJvb2xlYW47XG4gICAgQWRkVG9MaXN0OiBib29sZWFuO1xuICAgIERlbGV0ZTogYm9vbGVhbjtcbiAgICBFZGl0OiBib29sZWFuO1xuICAgIEV4cG9ydDogYm9vbGVhbjtcbiAgICBQcmludDogYm9vbGVhbjtcbiAgICBSZWZyZXNoOiBib29sZWFuO1xuICAgIFJlbW92ZUZyb21MaXN0OiBib29sZWFuO1xuICAgIFZpZXc6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29tbWFuZCB7XG4gICAgRGF0YTogYW55O1xuICAgIERpc2FibGVXaGVuUmVhZG9ubHk6IGJvb2xlYW47XG4gICAgSGlkZURpc2FibGU6IGJvb2xlYW47XG4gICAgSWNvblVybDogc3RyaW5nO1xuICAgIElzTGFyZ2U6IGJvb2xlYW47XG4gICAgTXl0eXBlOiBzdHJpbmc7XG4gICAgT3JkZXI6IG51bWJlcjtcbiAgICBTaG93T25Db250ZXh0OiBib29sZWFuO1xuICAgIFNob3dPblRvb2xiYXI6IGJvb2xlYW47XG4gICAgVGV4dDogc3RyaW5nO1xuICAgIFVzZUFsd2F5czogYm9vbGVhbjtcbiAgICBVc2VGb3JNdWx0aTogYm9vbGVhbjtcbiAgICBVc2VGb3JTaW5nbGU6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgUmVwb3J0TW9kZWwgZXh0ZW5kcyBCYXNlUmVwb3J0TW9kZWwge1xuICAgIERhdGE6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFJlcG9ydExpc3RNb2RlbCBleHRlbmRzIEJhc2VSZXBvcnRNb2RlbCB7XG4gICAgVmlldzogR3JpZFZpZXc7XG59XG5leHBvcnQgY2xhc3MgUmVwb3J0Rm9ybU1vZGVsIGV4dGVuZHMgQmFzZVJlcG9ydE1vZGVsIHtcbiAgICBWaWV3OiBGb3JtVmlldztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZVZpZXcge1xuICAgIENvbmRpdGlvbmFsRm9ybWF0czogW107XG4gICAgUGFyZW50SWREYk5hbWU6IHN0cmluZztcbiAgICBTaG93U2VsZWN0aW9uQ2hlY2tzOiBib29sZWFuO1xuICAgIFRyZWVBdXRvT3BlbkxldmVsczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRWaWV3IHtcbiAgICBBbGxvd0dyaWRDb2x1bW5Tb3J0OiBib29sZWFuO1xuICAgIEF1dG9JbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIENvbHVtblJlcXVlc3RFbnVtOiBzdHJpbmc7XG4gICAgQ29sdW1uczogQXJyYXk8UmVwb3J0Vmlld0NvbHVtbj47XG4gICAgQ29uZGl0aW9uYWxGb3JtYXRzOiBbXTtcbiAgICBEaXNhYmxlUm93UmVsb2FkOiBib29sZWFuO1xuICAgIEdyaWRTZXR0aW5nOiBHcmlkU2V0dGluZztcbiAgICBHcmlkX0ZyZWVDb2x1bW5TaXppbmc6IGJvb2xlYW47XG4gICAgR3JpZF9HcmlkTGluZXM6IHN0cmluZztcbiAgICBHcmlkX0hpZGVIZWFkZXI6IGJvb2xlYW47XG4gICAgR3JpZF9TaG93Um93TnVtYmVyOiBib29sZWFuO1xuICAgIEhhc0NvbmRpdGlvbmFsRm9ybWF0OiBib29sZWFuO1xuICAgIEhhc1N1bW1hcnlSb3c6IGJvb2xlYW47XG4gICAgSGlkZUljb246IGJvb2xlYW47XG4gICAgSXNDaGVja0xpc3Q6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyVmlldyB7XG4gICAgQ2FsZW5kYXJGaWVsZHM6IENhbGVuZGFyRmllbGRzO1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtVmlldyB7XG4gICAgRm9ybVBhbmVsU2V0dGluZzogYW55O1xufVxuZXhwb3J0IHR5cGUgVmlld1R5cGVzID0gR3JpZFZpZXcgfCBDYWxlbmRhclZpZXcgfCBUcmVlVmlldyB8IEZvcm1WaWV3O1xuXG5leHBvcnQgdHlwZSBSZXBvcnRNb2RlbFR5cGVzID0gUmVwb3J0TGlzdE1vZGVsIHwgUmVwb3J0Q2FsZW5kYXJNb2RlbCB8IFJlcG9ydEZvcm1Nb2RlbCB8IFJlcG9ydFRyZWVNb2RlbDtcblxuZXhwb3J0IGNsYXNzIFJlcG9ydENhbGVuZGFyTW9kZWwgZXh0ZW5kcyBCYXNlUmVwb3J0TW9kZWwge1xuICAgIFZpZXc6IENhbGVuZGFyVmlldztcbn1cbmV4cG9ydCBjbGFzcyBSZXBvcnRUcmVlTW9kZWwgZXh0ZW5kcyBCYXNlUmVwb3J0TW9kZWwge1xuICAgIFZpZXc6IFRyZWVWaWV3O1xufVxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhckZpZWxkcyB7XG4gICAgRW5kRGF0ZTogc3RyaW5nO1xuICAgIE5vdGVzOiBzdHJpbmc7XG4gICAgU3RhcnREYXRlOiBzdHJpbmc7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBDb2xvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmVwb3J0Vmlld0NvbHVtbiB7XG4gICAgQWxpYXM6IHN0cmluZztcbiAgICBDYXB0aW9uOiBzdHJpbmc7XG4gICAgRmllbGREZWZJZDogc3RyaW5nO1xuICAgIEZpZWxkVHlwZUlkOiBudW1iZXI7XG4gICAgRmllbGRUeXBlOiBzdHJpbmc7XG4gICAgSGFzU3VtbWFyeTogYm9vbGVhbjtcbiAgICBIaWRkZW46IGJvb2xlYW47XG4gICAgSXNMdHI6IGJvb2xlYW47XG4gICAgSXNQcmV2aWV3OiBib29sZWFuO1xuICAgIE1ldGFGaWVsZFR5cGVJZDogc3RyaW5nO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIFRhZz86IHN0cmluZztcbiAgICBJY29uOiBzdHJpbmc7XG4gICAgT25seUltYWdlPzogYm9vbGVhbjtcbiAgICBFeHRyYT86IGFueTtcbiAgICAkV2lkdGg6IHN0cmluZztcbiAgICAkV2lkdGgyPzogc3RyaW5nO1xuICAgICRNZXJnZWRGaWVsZHNUb0NvbHVtbj86IHN0cmluZ1tdO1xuICAgICRDU1NDbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgJEN1c3RvbUNvbXBvbmVudD86IEVqcmF5T2xnbztcbiAgICAkVGV4dFdpZHRoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgR3JpZFNldHRpbmcge1xuICAgIENvbFNldHRpbmdMaXN0OiBBcnJheTxDb2xTZXR0aW5nPjtcbiAgICBTb3J0U2V0dGluZ0xpc3Q6IEFycmF5PFNvcnRTZXR0aW5nPjtcbiAgICBBdXRvU2l6ZUNvbHVtbnM6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgQ29sU2V0dGluZyB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFdpZHRoOiBudW1iZXI7XG4gICAgSXNIaWRkZW46IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgU29ydFNldHRpbmcge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBTb3J0RGlyZWN0aW9uOiBzdHJpbmc7XG4gICAgSXNHcm91cGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUmVwb3J0RmllbGQge1xuICAgIHB1YmxpYyBrZXk6IHN0cmluZztcbiAgICBwdWJsaWMgdmFsdWU6IHN0cmluZztcbiAgICBwdWJsaWMgY2FwdGlvbjogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4sIHB1YmxpYyBpdGVtOiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGNvbHVtbi5OYW1lO1xuICAgICAgICB0aGlzLmNhcHRpb24gPSBjb2x1bW4uQ2FwdGlvbjtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaXRlbVtuYW1lXTtcbiAgICAgICAgaWYgKE51bWJlcihjb2x1bW4uRmllbGRUeXBlSWQpID09PSBGaWVsZEluZm9UeXBlRW51bS5EYXRlSW5mbykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaXRlbVtuYW1lICsgJyRDYXB0aW9uJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcihjb2x1bW4uRmllbGRUeXBlSWQpID09PSBGaWVsZEluZm9UeXBlRW51bS5JY29uSW5mbykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaXRlbVtuYW1lXS5Vcmw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5SZXN1bHQge1xuICAgIGRhdGE6IHsgc3RoOiBzdHJpbmcgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U2V0dGluZ3NEYXRhTW9kZWwgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBQbGFjZUhvbGRlcnM/OiBQbGFjZUhvbGRlckRhdGFNb2RlbFtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhTW9kZWwgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBTZWxlY3Rvcjogc3RyaW5nO1xuICAgIFNldHRpbmdzOiBDb21wb25lbnRTZXR0aW5nc0RhdGFNb2RlbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VIb2xkZXJEYXRhTW9kZWwgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBJc1BhZ2U6IGJvb2xlYW47XG4gICAgT3JkZXJOdW1iZXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVEYXRhTW9kZWwgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIFBsYWNlSG9sZGVyOiBQbGFjZUhvbGRlckRhdGFNb2RlbDtcbiAgICBDb21wb25lbnQ6IENvbXBvbmVudERhdGFNb2RlbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUxpc3RSZXBvcnRNb2RlbCBleHRlbmRzIE1vRm9yUmVwb3J0TW9kZWwge1xuICAgIE1vRGF0YUxpc3Q6IEFycmF5PFBhZ2VEYXRhTW9kZWw+O1xufVxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVMaXN0UmVwb3J0TW9kZWwgZXh0ZW5kcyBNb0ZvclJlcG9ydE1vZGVsIHtcbiAgICBNb0RhdGFMaXN0OiBBcnJheTxNb2R1bGVEYXRhTW9kZWw+O1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgQ29tcG9uZW50OiBDb21wb25lbnREYXRhTW9kZWw7XG4gICAgTW9kdWxlTGlzdDogTW9kdWxlTGlzdFJlcG9ydE1vZGVsO1xuICAgIENoaWxkUGFnZUxpc3Q6IFBhZ2VMaXN0UmVwb3J0TW9kZWw7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBSb3V0ZTogc3RyaW5nO1xuICAgIElzRGVmYXVsdFJvdXRlOiBib29sZWFuO1xuICAgIElzTG9naW5Sb3V0ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3J0YWxEYXRhTW9kZWwgZXh0ZW5kcyBQYWdlRGF0YU1vZGVsIHtcbiAgICBJc0FjdGl2ZTogYm9vbGVhbjtcbiAgICBJc1B3YTogYm9vbGVhbjtcbiAgICBQb3J0YWxTZXR0aW5nczogTWV0YW9iamVjdERhdGFNb2RlbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBWaXNpYmlsaXR5IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSGVhZGVyTGF5b3V0IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBTdWJ0aXRsZTogc3RyaW5nO1xuICAgIEF2YXRhcjogYW55O1xuICAgIEZhY2V0TGlzdDogeyBNb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSB7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBpdGVtSWQ6IHN0cmluZztcbiAgICBEYXRhOiBhbnk7XG4gICAgQ29tbWFuZDogYW55O1xuICAgIGhhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgSXNCdWlsdGluPzogYm9vbGVhbjtcbiAgICBtZW51PzogeyBpdGVtczogTWVudUl0ZW1bXSB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmdTZXR0aW5nIHtcbiAgICBFbmRJbmRleDogbnVtYmVyO1xuICAgIEhhc1BhZ2luZzogYm9vbGVhbjtcbiAgICBQYWdlOiBudW1iZXI7XG4gICAgUGFnZVNpemU6IG51bWJlcjtcbiAgICBSb3dDb3VudDogbnVtYmVyO1xuICAgIFN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgICBUb3RhbFBhZ2VzOiBudW1iZXI7XG4gICAgVG90YWxSb3dzOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkluZm9UeXBlIHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgSGlkZGVuOiBib29sZWFuO1xuICAgIENhcHRpb246IHN0cmluZztcbiAgICBJc01hbmRhdG9yeT86IGJvb2xlYW47XG4gICAgV2lkdGg6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUGFuZWxTZXR0aW5ncyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgUmVwb3J0SWQ6IHN0cmluZztcbiAgICBJc0RlZmF1bHQ6IGJvb2xlYW47XG4gICAgSXNQdWJsaWM6IGJvb2xlYW47XG4gICAgQXBwbHlBdXRvbWF0aWNhbGx5OiBib29sZWFuO1xuICAgIFNlYXJjaE1vPzogc3RyaW5nO1xuICAgIEZpZWxkc1NldHRpbmc/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSB0eXBlIERldmljZVNpemUgPSAnZGVza3RvcCcgfCAnbW9iaWxlJyB8ICd0YWJsZXQnO1xuZXhwb3J0IGNvbnN0IERhdGVSYW5nZXMgPSBbXG4gICAgJ0RhdGVSX05vbmUnLFxuICAgICdEYXRlUl9TcGVjaWZpY1JhbmdlJyxcbiAgICAnRGF0ZVJfVG9kYXknLFxuICAgICdEYXRlUl9UaGlzV2VlaycsXG4gICAgJ0RhdGVSX1RoaXNNb250aCcsXG4gICAgJ0RhdGVSX1RoaXNZZWFyJyxcbiAgICAnRGF0ZVJfRGF5c0JlZm9yZScsXG4gICAgJ0RhdGVSX1ByZXZXZWVrJyxcbiAgICAnRGF0ZVJfUHJldk1vbnRoJyxcbiAgICAnRGF0ZVJfUHJldlllYXInLFxuICAgICdEYXRlUl9EYXlzQWZ0ZXInLFxuICAgICdEYXRlUl9OZXh0V2VlaycsXG4gICAgJ0RhdGVSX05leHRNb250aCcsXG4gICAgJ0RhdGVSX05leHRZZWFyJ1xuXTtcblxuZXhwb3J0IGludGVyZmFjZSBVaVJlcG9ydFZpZXdCYXNlIHtcbiAgICBVaUNvbXBvbmVudDoge1xuICAgICAgICBDb21wb25lbnQ6IGJvb2xlYW47XG4gICAgICAgIE1vZHVsZTogc3RyaW5nO1xuICAgICAgICBNb2R1bGVGaWxlTmFtZTogc3RyaW5nO1xuICAgICAgICBOYW1lOiBzdHJpbmc7XG4gICAgICAgIFNlbGVjdG9yOiBzdHJpbmc7XG4gICAgICAgIFNldHRpbmdzOiBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZztcbiAgICB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIFR5cGU6IHN0cmluZztcbiAgICBJY29uOiBzdHJpbmc7XG4gICAgSXNEZWZhdWx0OiBib29sZWFuO1xuICAgIEhpZGRlbjogYm9vbGVhbjtcbiAgICBFbmFibGVTZWFyY2g6IGJvb2xlYW47XG4gICAgRGlzYWJsZVJlc3BvbnNpdmU/OiBib29sZWFuO1xuICAgIERpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51PzogYm9vbGVhbjtcbiAgICBIb3Jpem9udGFsR3JvdXBCeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRTZXR0aW5nIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgeHR5cGU6IHN0cmluZztcbiAgICBUZXh0VmlzaWJsZT86IGJvb2xlYW47XG4gICAgaXRlbXM6IExheW91dFNldHRpbmdbXTtcbiAgICBJc1Jvb3Q/OiBib29sZWFuO1xuICAgIFNlbGVjdGVkVGFiUGFnZU5hbWU/OiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSB0eXBlIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSA9ICdzJyB8ICdtJyB8ICdsJyB8ICd4bCc7XG5leHBvcnQgaW50ZXJmYWNlIFRyZWVOb2RlT2JqIHtcbiAgICBpc0V4cGFuZDogYm9vbGVhbjtcbiAgICB2aXNpYmlsaXR5OiBib29sZWFuO1xuICAgIGV4cGFuZDogKCkgPT4gdm9pZDtcbiAgICBjb2xsYXBzZTogKCkgPT4gdm9pZDtcbiAgICBEYXRhOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIGNoaWxkcmVuOiBUcmVlTm9kZU9ialtdO1xuICAgIGljb246IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbiAgICBsZWFmOiBib29sZWFuO1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBsZXZlbDogbnVtYmVyO1xuICAgIGxvYWRpbmc/OiBib29sZWFuO1xuICAgIGhhc09uZURlcHRoTGV2ZWw/OiBib29sZWFuO1xuICAgIHBhcmVudE5vZGU6IFRyZWVOb2RlT2JqIHwgbnVsbDtcbiAgICBmaXJzdENoaWxkOiBUcmVlTm9kZU9iaiB8IG51bGw7XG4gICAgbGFzdENoaWxkOiBUcmVlTm9kZU9iaiB8IG51bGw7XG4gICAgcHJldmlvdXNTaWJsaW5nOiBUcmVlTm9kZU9iaiB8IG51bGw7XG4gICAgbmV4dFNpYmxpbmc6IFRyZWVOb2RlT2JqIHwgbnVsbDtcbiAgICBhdHRyaWJ1dGVzOiB7IERhdGE6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIH07XG4gICAgaGFzQ2hpbGROb2RlczogKCkgPT4gYm9vbGVhbjtcbiAgICBub0Ryb3A6IGJvb2xlYW47XG4gICAgJENoaWxkcmVuPzogVHJlZU5vZGVPYmpbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5SZXNpemVkQXJncyB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHdpZHRoOiBudW1iZXI7XG59XG5leHBvcnQgdHlwZSBjb2x1bW5zUmVzaXplZEV2ZW50QXJncyA9IHsgY29sdW1uczogQXJyYXk8UmVwb3J0Vmlld0NvbHVtbj47IHJlc2l6ZWQ6IEFycmF5PENvbHVtblJlc2l6ZWRBcmdzPiB9O1xuZXhwb3J0IHR5cGUgUmVsYXRpb25JdGVtVHlwZSA9IHtcbiAgICBJZDogc3RyaW5nO1xuICAgIFNvdXJjZVR5cGVEZWZJZDogc3RyaW5nO1xuICAgIE9iamVjdEluUmVsYXRpb25OYW1lOiBzdHJpbmc7XG4gICAgR3JvdXBDYXB0aW9uOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVqcmF5T2xnbyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIE1vZHVsZTogc3RyaW5nO1xuICAgIE1vZHVsZUZpbGVOYW1lOiBzdHJpbmc7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFNlbGVjdG9yOiBzdHJpbmc7XG4gICAgUGFyYW1ldGVycz86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgU2V0dGluZ3M/OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVcGxvYWRpbmdTdGF0ZSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdXBsb2FkaW5nOiBib29sZWFuO1xuICAgIHN0YXRlOiAnVXBsb2FkaW5nJyB8ICdFcnJvcicgfCAnQ29tcGxldGUnIHwgJ1N0YXJ0JztcbiAgICBwcm9ncmVzczogYW55O1xufVxuZXhwb3J0IHR5cGUgR3JvdXBCeUl0ZW0gPSB7IFtrZXk6IHN0cmluZ106IGFueTsgaWQ6IHN0cmluZzsga2V5OiBzdHJpbmc7IHZhbHVlOiBhbnlbXSB9O1xuZXhwb3J0IHR5cGUgTm90aWZ5T3B0aW9ucyA9IHtcbiAgICBTb3VuZDogYm9vbGVhbjsgLy8gU291bmQgb2Ygbm90aWZpY2F0aW9uLiBTZXQgdGhpcyBmYWxzZSB0byBkaXNhYmxlIHNvdW5kLlxuICAgIEltYWdlOiBzdHJpbmcgfCBudWxsOyAvLyBJbWFnZSBzb3VyY2Ugc3RyaW5nXG4gICAgVGl0bGU6IHN0cmluZyB8IG51bGw7IC8vIFRpdGxlIG9mIG5vdGlmaWNhdGlvbi4gSWYgeW91IGRvIG5vdCBpbmNsdWRlIHRoZSB0aXRsZSBpbiBvcHRpb25zIGl0IHdpbGwgYXV0b21hdGljYWxseSB0YWtlcyBpdHMgdmFsdWVcbiAgICBJY29uOiBib29sZWFuOyAvLyBJY29uIG9mIG5vdGlmaWNhdGlvbi4gTGVhdmUgYXMgaXMgZm9yIGRlZmF1bHQgaWNvbiBvciBzZXQgY3VzdG9tIHN0cmluZ1xuICAgIERlbGF5OiBudW1iZXI7IC8vIEhpZGUgbm90aWZpY2F0aW9uIGFmdGVyIHRoaXMgdGltZSAoaW4gbWlsaXNlY29uZHMpXG4gICAgQ2xvc2FibGU6IGJvb2xlYW47IC8vIE1ha2Ugbm90aWZpY2F0aW9ucyBjbG9zYWJsZVxuICAgIERlbGF5SW5kaWNhdG9yOiBib29sZWFuOyAvLyBTaG93IHRpbWVyIGluZGljYXRvclxuICAgIENsb3NlT25DbGljazogYm9vbGVhbjsgLy8gQ2xvc2Ugbm90aWZpY2F0aW9ucyBieSBjbGlja2luZyBvbiB0aGVtXG4gICAgSXNSdGw6IGJvb2xlYW47XG4gICAgUG9zaXRpb246IHN0cmluZyB8IG9iamVjdDsgLy8gQXZhaWxhYmxlIG9wdGlvbnM6IFwidG9wIGxlZnRcIiwgXCJ0b3AgcmlnaHRcIiwgXCJib3R0b20gbGVmdFwiLCBcImJvdHRvbSByaWdodFwiLCBcImNlbnRlciB0b3BcIiwgXCJjZW50ZXIgYm90dG9tXCJcbiAgICBTb3VuZFBhdGg6IHN0cmluZzsgLy8gVGhlIGZvbGRlciBwYXRoIHdoZXJlIHNvdW5kcyBhcmUgbG9jYXRlZFxuICAgIFNpemU6IHN0cmluZzsgLy8gbm9ybWFsLCBtaW5pLCBsYXJnZVxuICAgIENvbnRpbnVlRGVsYXlPbkluYWN0aXZlVGFiOiBib29sZWFuOyAvLyBDb250aW51ZSBkZWxheSB3aGVuIGJyb3dzZXIgdGFiIGlzIGluYWN0aXZlXG4gICAgV2lkdGg6IG51bWJlcjsgLy8gV2lkdGggb2Ygbm90aWZpY2F0aW9uIGJveFxuICAgIE1lc3NhZ2VIZWlnaHQ6IG51bWJlcjsgLy8gTm90aWZpY2F0aW9uIG1lc3NhZ2UgbWF4aW11bSBoZWlnaHQuXG4gICAgTm90aWZpY2F0aW9uSXRlbT86IE5vdGlmaWNhdGlvbkl0ZW07XG59O1xuZXhwb3J0IHR5cGUgU2hhcmVCdXR0b25zQ2hvaWNlRGVmID0ge1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW107XG4gICAgYWRkOiBib29sZWFuO1xufTtcbmV4cG9ydCB0eXBlIENob2ljZURlZiA9IHtcbiAgICBBY3Rpdml0eURlZklkOiBzdHJpbmc7XG4gICAgQWN0aXZpdHlSdW5JZDogc3RyaW5nO1xuICAgIENob2ljZURlZklkOiBzdHJpbmc7XG4gICAgQ2hvaWNlTmFtZT86IHN0cmluZztcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIEljb24/OiBzdHJpbmc7XG4gICAgSGFzQmFyPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBXb3JrZmxvd0V4ZWN1dGVDaG9pY2VTdGF0dXMgPSB7XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICByZXN1bHQ6IGFueTtcbiAgICBlcnJvcjogYW55O1xuICAgIGNob2ljZT86IENob2ljZURlZjtcbn07XG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkID0ge1xuICAgIG1zZzogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGltYWdlOiBzdHJpbmc7XG4gICAgbW87XG4gICAgdWlPcHRpb25zOiBOb3RpZnlPcHRpb25zO1xuICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25BY3Rpb24gPSB7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBJZDogc3RyaW5nO1xuICAgIEljb246IHN0cmluZztcbiAgICBTdGF0dXM6IHN0cmluZyB8IGFueTtcbn07XG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25JdGVtID0gTWV0YW9iamVjdERhdGFNb2RlbCAmIHtcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIFVucmVhZDogYm9vbGVhbjtcbiAgICBDb250ZW50OiBzdHJpbmc7XG4gICAgJFNhZmVDb250ZW50PzogU2FmZUh0bWw7XG4gICAgUHJpb3JpdHk6IG51bWJlcjtcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG4gICAgVGFnOiBzdHJpbmc7XG4gICAgSWNvbjogc3RyaW5nO1xuICAgIEltYWdlOiBzdHJpbmc7XG4gICAgQ3JlYXRpb25EYXRlOiBEYXRlO1xuICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiBzdHJpbmc7XG4gICAgVWlBY3Rpb25zPzogTm90aWZpY2F0aW9uQWN0aW9uW107XG4gICAgJENob2ljZURlZlN0YXR1cz86IFdvcmtmbG93RXhlY3V0ZUNob2ljZVN0YXR1cztcbn07XG5cbmV4cG9ydCB0eXBlIEV4Tm90aWZpY2F0aW9uUGF5bG9hZCA9IHtcbiAgICBsYW5nOiBzdHJpbmc7XG4gICAgaXNSdGw6IGJvb2xlYW47XG4gICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbTtcbn07XG5leHBvcnQgdHlwZSBGb3JtVmlzaWJpbGl0eVN0YXR1cyA9ICdQZW5kaW5nJyB8ICdWaXNpYmxlJztcbmV4cG9ydCB0eXBlIENhcnRhYmxlVGVtcGxhdGVLZXkgPSB7IFR5cGVEZWZJZDogc3RyaW5nOyBTZXR0aW5nc0lkOiBzdHJpbmcgfTtcbmV4cG9ydCBlbnVtIFNvcnREaXJlY3Rpb24ge1xuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgQVNDID0gJ2FzYycsXG4gICAgREVTQyA9ICdkZXNjJ1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uU29ydCB7XG4gICAgZmllbGQ6IHN0cmluZyB8IG51bGw7XG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICAgIGlzTnVtYmVyPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoSW5wdXQge1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkdyb3VwIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbiAgICBzaG93QXNDb2x1bW46IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvblBhZ2Uge1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgY3VycmVudFBhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uU3RhdGUge1xuICAgIHNvcnRCeTogQ29sbGVjdGlvblNvcnRbXTtcbiAgICBncm91cEJ5OiBDb2xsZWN0aW9uR3JvdXBbXTtcbiAgICBwYWdlOiBDb2xsZWN0aW9uUGFnZTtcbiAgICBzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTdGF0ZSBleHRlbmRzIENvbGxlY3Rpb25TdGF0ZSB7XG4gICAgY29sdW1uczogc3RyaW5nW107XG4gICAgY29sdW1uS2V5czogc3RyaW5nW107XG4gICAgZnJlZXplVG9Db2x1bW46IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgZW51bSBTZWxlY3Rpb25Nb2RlIHtcbiAgICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgICBNVUxUSVBMRSA9ICdtdWx0aXBsZScsXG4gICAgTk9ORSA9ICdub25lJ1xufVxuZXhwb3J0IGludGVyZmFjZSBUeXBlVWx2TWFpbkN0cmxyIHtcbiAgICBBZGFwdGVyOiBhbnk7XG4gICAgU2V0dGluZzogYW55O1xuICAgIFN5c3RlbTogYW55O1xuICAgIFVsdlBhcmFtczogYW55O1xuICAgIEZlYXR1cmVzOiBhbnk7XG4gICAgVWlPdmVycmlkZTogYW55O1xuICAgIFNlYXJjaFBhbmVsQ3RybHI6IGFueTtcbiAgICBTZWxlY3Rpb25BZGFwdGVyOiBhbnk7XG4gICAgRGF0YUN0cmxyOiBUeXBlVWx2RGF0YUN0cmxyO1xuICAgIENvbW1hbmRCYXJDdHJscjogYW55O1xuICAgIFZpZXdlckFkYXB0ZXI6IGFueTtcbiAgICBQYXJlbnRNbzogYW55O1xuICAgIEZpZWxkQ3RybHI6IGFueTtcbiAgICBpc01hbmRhdG9yeTogYm9vbGVhbjsgLy8gcG9ydGFsIHVzZSBpdC4gY29tcG9uZW50IG1hZGFyZWtcbiAgICAvLy8gUmVsYXRlZCBmaWVsZCBvZiBVbHZcbiAgICAvLyBQYXJlbnRGaWVsZEluZm9DdHJscjogbnVsbCxcbiAgICBJc1ByZXZpZXdTb3VyY2VGaWVsZDogYm9vbGVhbjtcbiAgICAvLy8gSW5kaWNhdGUgd2hldGhlciB0aGlzIFVsdiBpcyB1c2VkIGFzIHJlbGF0aW9uIGZpZWxkIHRoYXQgaXMgUHJldmlld1NvdXJjZSBmb3IgYSBzdWJmb3JtXG4gICAgU2hvd09rQ2FuY2VsQnV0dG9uczogYm9vbGVhbjtcbiAgICBfaXNFbmFibGU6IGJvb2xlYW47XG4gICAgX2lzUmVhZE9ubHk6IGJvb2xlYW47XG4gICAgX2lzVmlzaWJsZTogYm9vbGVhbjtcbiAgICBGb290dGVyQnV0dG9uczogYm9vbGVhbjtcbiAgICBSZWZyZXNoUm93c0J5TW9zTm9TZWxlY3Rpb25DaGFuZ2UoXG4gICAgICAgIGVkaWRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBhZGRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBkZWxldGVkTW9zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB2b2lkO1xuICAgIFJlZnJlc2hSb3dzQnlNb3MoXG4gICAgICAgIGVkaWRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBhZGRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBkZWxldGVkTW9zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbHZEYXRhQ3RybHIge1xuICAgIEdldEVkaXRGb3JtUGFyYW1zKG1vLCBpc1JlYWRPbmx5LCBpc05ldywgaW5oZXJpdGFuY2VDaGlsZFR5cGVEZWYsIGRvUmV0dXJuKTogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUNvbXBvbmVudFBhcmFtcyB7XG4gICAgZm9ybVNldHRpbmc/OiBGb3JtU2V0dGluZztcbiAgICBtb0lkOiBzdHJpbmc7XG4gICAgdHlwZURlZklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmVwb3J0SWQ/OiBzdHJpbmc7XG4gICAgdmlld0lkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIFZpZXdOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGluRGlhbG9nPzogYm9vbGVhbjtcbiAgICBpc1NpbXBsZT86IGJvb2xlYW47XG4gICAgbG9hZEFjdGl2aXR5Vmlldz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEJydWxlQWN0aW9uTWVzc2FnZSB7XG4gICAgTWVzc2FnZVR5cGU6IG51bWJlcjtcbiAgICBFc2NhcGVDaGFyYWN0ZXJzOiBib29sZWFuO1xuICAgIE1lc3NhZ2VFeHByZXNzaW9uOiBzdHJpbmc7XG4gICAgTWVzc2FnZUV4cHJlc3Npb25IdG1sOiBTYWZlSHRtbDtcbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sdUJBQXVCO0lBQXBDO1FBWUksY0FBUyxHQUFHLElBQUksQ0FBQztJQVdyQixDQUFDO0NBQUE7QUFTRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsdUJBQXVCO0NBU2xFO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtDQUVyRTtBQUNELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx1QkFBdUI7Q0FPbEU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBSWhFO0FBQ0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtDQVVoRTtBQUNELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFBdUI7Q0FLbkU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBQUc7QUFDcEUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtDQUl2RTtBQUNELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx1QkFBdUI7Q0FPakU7QUFNRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsdUJBQXVCO0NBR3hFO0FBQ0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDRCQUE0QjtDQUd4RTtBQUNELE1BQU0sT0FBTyxvQ0FBcUMsU0FBUSw0QkFBNEI7Q0FFckY7QUFDRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0NBSXpFO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtDQUd0RTtBQUNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7Q0FRaEU7QUFDRCxNQUFNLE9BQU8sYUFBYTtDQU16QjtBQUNELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx1QkFBdUI7Q0FNcEU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBTWhFO0FBQ0QsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHVCQUF1QjtDQUtyRTtBQUNELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFBdUI7Q0FPbkU7QUFlRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsdUJBQXVCO0NBVXRFO0FBQ0QsTUFBTSxPQUFPLGlCQUFpQjtDQU83QjtBQUNELE1BQU0sT0FBTyw4QkFBK0IsU0FBUSx1QkFBdUI7Q0FpQjFFO0FBK0JELE1BQU0sT0FBTyxtQkFBbUI7Q0FrQi9CO0FBYUQsTUFBTSxPQUFPLGdCQUFnQjtJQXFCekI7UUFDSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDN0QsQ0FBQztDQUNKO0FBQ0QsTUFBTSxPQUFPLGNBQWM7Q0FPMUI7QUFDRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUFjO0NBS2xEO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjtDQUc3RDtBQUVELE1BQU0sQ0FBTixJQUFZLGlCQThDWDtBQTlDRCxXQUFZLGlCQUFpQjtJQUN6QiwrREFBVyxDQUFBO0lBQ1gscUVBQWMsQ0FBQTtJQUNkLGlFQUFZLENBQUE7SUFDWixpRUFBWSxDQUFBO0lBQ1osaUVBQVksQ0FBQTtJQUNaLGlFQUFZLENBQUE7SUFDWix5RUFBZ0IsQ0FBQTtJQUNoQiw2RUFBa0IsQ0FBQTtJQUNsQix3RUFBZ0IsQ0FBQTtJQUNoQiwwRUFBaUIsQ0FBQTtJQUNqQiwwRUFBaUIsQ0FBQTtJQUNqQix3RUFBZ0IsQ0FBQTtJQUNoQiwwR0FBaUMsQ0FBQTtJQUNqQyxnRkFBb0IsQ0FBQTtJQUNwQixrRkFBcUIsQ0FBQTtJQUNyQixzRkFBdUIsQ0FBQTtJQUN2QiwwRUFBaUIsQ0FBQTtJQUNqQiw4RUFBbUIsQ0FBQTtJQUNuQixzRkFBdUIsQ0FBQTtJQUN2Qiw4SEFBMkMsQ0FBQTtJQUMzQyxnRkFBb0IsQ0FBQTtJQUNwQiw4RkFBMkIsQ0FBQTtJQUMzQix3RkFBd0IsQ0FBQTtJQUN4QiwwRUFBaUIsQ0FBQTtJQUNqQixvRkFBc0IsQ0FBQTtJQUN0Qiw0RkFBMEIsQ0FBQTtJQUMxQixrRkFBcUIsQ0FBQTtJQUNyQiwwRUFBaUIsQ0FBQTtJQUNqQixzRUFBZSxDQUFBO0lBQ2Ysa0VBQWEsQ0FBQTtJQUNiLDBFQUFpQixDQUFBO0lBQ2pCLGdGQUFvQixDQUFBO0lBQ3BCLG9FQUFjLENBQUE7SUFDZCxrRUFBYSxDQUFBO0lBQ2IsOEVBQW1CLENBQUE7SUFDbkIsNEVBQWtCLENBQUE7SUFDbEIsNEVBQWtCLENBQUE7SUFDbEIsc0VBQWUsQ0FBQTtJQUNmLG9IQUFzQyxDQUFBO0lBQ3RDLG9FQUFjLENBQUE7SUFDZCxrRUFBYSxDQUFBO0lBQ2IsZ0dBQTRCLENBQUE7SUFDNUIsc0ZBQXVCLENBQUE7SUFDdkIsb0ZBQXNCLENBQUE7SUFDdEIsb0VBQWMsQ0FBQSxDQUFDLGFBQWE7QUFDaEMsQ0FBQyxFQTlDVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBOEM1QjtBQWdCRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUtJLHlCQUFvQixHQUFHLDRCQUE0QixDQUFDO0lBQ3hELENBQUM7Q0FBQTtBQVlELE1BQU0sT0FBTyxhQUFhO0NBY3pCO0FBQ0QsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBRTVDO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0o7QUFDRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUFlO0NBRW5EO0FBQ0QsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtDQUVuRDtBQW1DRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtDQUV2RDtBQUNELE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7Q0FFbkQ7QUFTRCxNQUFNLE9BQU8sZ0JBQWdCO0NBdUI1QjtBQUVELE1BQU0sT0FBTyxXQUFXO0NBSXZCO0FBQ0QsTUFBTSxPQUFPLFVBQVU7Q0FJdEI7QUFDRCxNQUFNLE9BQU8sV0FBVztDQUl2QjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBSXBCLFlBQW1CLE1BQXdCLEVBQVMsSUFBUztRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQUs7UUFDekQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7WUFDM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQztTQUM3QztRQUNELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7WUFDM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNwQztJQUNMLENBQUM7Q0FDSjtBQWdHRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtDQUNuQixDQUFDO0FBb0tGLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsOEJBQWEsQ0FBQTtJQUNiLDRCQUFXLENBQUE7SUFDWCw4QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQWlDRCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3JCLGtDQUFpQixDQUFBO0lBQ2pCLHNDQUFxQixDQUFBO0lBQ3JCLDhCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IERhdGVJbmZvIGFzIERhdGVJbmZvU2VydmljZSB9IGZyb20gJy4uL2RhdGUtc2VydmljZXMnO1xuXG5leHBvcnQgY2xhc3MgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBDb250cm9sRmllbGRDYXB0aW9uOiBzdHJpbmc7XG4gICAgQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQ6IHN0cmluZztcbiAgICBDb250cm9sRmllbGREZWZJZDogc3RyaW5nO1xuICAgIENvbnRyb2xOYW1lOiBzdHJpbmc7XG4gICAgUmVsYXRlZEZpZWxkTGlzdDogW107XG4gICAgSGlkZTogYm9vbGVhbjtcbiAgICB4dHlwZTogc3RyaW5nO1xuICAgIExhYmVsUG9zaXRpb246IHN0cmluZztcbiAgICBJc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgICBJc1Zpc2libGU6IGJvb2xlYW47XG4gICAgU2hvd0xhYmVsID0gdHJ1ZTtcbiAgICBJc1JlYWRPbmx5OiBib29sZWFuO1xuICAgIElzRW5hYmxlZDogYm9vbGVhbjtcbiAgICBJc0JvbGQ6IGJvb2xlYW47XG4gICAgSXNBdXRvbWF0aWM6IGJvb2xlYW47XG4gICAgSnNvbkV4dHJhUHJvcDogYW55IHwgbnVsbDtcbiAgICBDb21wb25lbnQ6IHN0cmluZztcbiAgICBJbmZvOiBDb250cm9sSW5mb1R5cGVzO1xuICAgIEZpZWxkSWNvbjogc3RyaW5nO1xuICAgIElzTHRyOiBib29sZWFuO1xuICAgIERpc3BsYXlUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBdHRhY2htZW50SW5mbyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIElkOiBzdHJpbmc7XG4gICAgSXNOZXc6IGJvb2xlYW47XG4gICAgSXNEZWxldGVkOiBib29sZWFuO1xuICAgIFR5cGU6IHN0cmluZztcbiAgICBGaWxlTmFtZT86IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBTdHJpbmdDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIE1heExlbmd0aDogbnVtYmVyO1xuICAgIE1pbkxlbmd0aDogbnVtYmVyO1xuICAgIFJlZ3VsYXJFeHByZXNzaW9uOiBzdHJpbmc7XG4gICAgSXNQYXNzd29yZDogYm9vbGVhbjtcbiAgICBJc011bHRpTGluZTogYm9vbGVhbjtcbiAgICBOdWxsVGV4dDogc3RyaW5nO1xuICAgIEFsbG93ZWRTdHJpbmdDaGFyczogc3RyaW5nO1xuICAgIE9ubHlBY2NlcHRDdXJyZW50Q3VsdHVyZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBSaWNoU3RyaW5nQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIFN0cmluZ0NvbnRyb2xJbmZvTW9kZWwge1xuICAgIElzSHRtbFZpZXdlcjogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBOdW1iZXJDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIE1pblZhbHVlOiBudW1iZXI7XG4gICAgTWF4VmFsdWU6IG51bWJlcjtcbiAgICBEZWNpbWFsUHJlY2lzaW9uOiBudW1iZXI7XG4gICAgU2hvd1Rob3VzYW5kU2VwZXJhdG9yOiBib29sZWFuO1xuICAgIE51bWJlclR5cGU6IHN0cmluZztcbiAgICBDdXJyZW5jeVN5bWJvbDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIEZpbGVQaWN0dXJlSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIEV4dDogc3RyaW5nO1xuICAgIEZpbGVJZDogc3RyaW5nO1xuICAgIElzRGVsZXRlZDogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBGaWxlQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBDYW5EZWxldGU6IGJvb2xlYW47XG4gICAgQ2FuU2F2ZTogYm9vbGVhbjtcbiAgICBDYW5WaWV3OiBib29sZWFuO1xuICAgIElzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgTWF4RmlsZUNvdW50OiBudW1iZXI7XG4gICAgTWF4RmlsZVNpemVLYjogbnVtYmVyO1xuICAgIE9mZmljZU9ubGluZTogYm9vbGVhbjtcbiAgICBWYWxpZEV4dGVuc2lvbnM6IHN0cmluZztcbiAgICBWaWV3VHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIENvbW1hbmRDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIE1lbnVOYW1lOiBzdHJpbmc7XG4gICAgRGlzYWJsZVdoZW5SZWFkb25seTogYm9vbGVhbjtcbiAgICBEaXNwbGF5VHlwZTogc3RyaW5nO1xuICAgIER5bmFtaWNDb21tYW5kOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgSWNvbkNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7fVxuZXhwb3J0IGNsYXNzIFBpY3R1cmVGaWxlQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBTaXplTW9kZTogbnVtYmVyO1xuICAgIE1heEZpbGVTaXplS2I6IG51bWJlcjtcbiAgICBWYWxpZEV4dGVuc2lvbnM6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBHYXVnZUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgSXNBdXRvbWF0aWM6IGJvb2xlYW47XG4gICAgTWF4VmFsdWU6IG51bWJlcjtcbiAgICBNYXhWYWx1ZTI6IG51bWJlcjtcbiAgICBNaW5WYWx1ZTogbnVtYmVyO1xuICAgIE1pblZhbHVlMjogbnVtYmVyO1xuICAgIFZhbHVlOiBudW1iZXI7XG59XG5leHBvcnQgdHlwZSBSZWxhdGlvbkxpc3RUeXBlcyA9XG4gICAgfCBSZWxhdGlvbkxpc3RDb250cm9sSW5mb01vZGVsXG4gICAgfCBIaXN0b3J5Q29udHJvbEluZm9Nb2RlbFxuICAgIHwgUmFiZXRlaEFrc2VUYWtpTGlzdGlDb250cm9sSW5mb01vZGVsXG4gICAgfCBTaW5nbGVSZWxhdGlvbkNvbnRyb2xJbmZvTW9kZWw7XG5leHBvcnQgY2xhc3MgUmVsYXRpb25MaXN0Q29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBSZWxhdGlvblZpZXdUeXBlOiBzdHJpbmc7XG4gICAgVWx2U2V0dGluZzogUmVwb3J0TW9kZWw7XG59XG5leHBvcnQgY2xhc3MgSGlzdG9yeUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBSZWxhdGlvbkxpc3RDb250cm9sSW5mb01vZGVsIHtcbiAgICBIYXNFeHRlcm5hbFBhcmFtZXRlcjogYm9vbGVhbjtcbiAgICBQYXJhbU5hbWUxOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUmFiZXRlaEFrc2VUYWtpTGlzdGlDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgUmVsYXRpb25MaXN0Q29udHJvbEluZm9Nb2RlbCB7XG4gICAgQXV0b1NhdmU7XG59XG5leHBvcnQgY2xhc3MgUmVsYXRlZFJlcG9ydENvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgSGFzRXh0ZXJuYWxQYXJhbWV0ZXI6IGJvb2xlYW47XG4gICAgUGFyYW1OYW1lMTogc3RyaW5nO1xuICAgIFVsdlNldHRpbmc6IFJlcG9ydE1vZGVsO1xufVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIEV4dHJhVGV4dDogc3RyaW5nO1xuICAgIFN1Z2dlc3Rpb25zOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgRW51bUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgSXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBTaG93QXNSYWRpb0J1dHRvbjogYm9vbGVhbjtcbiAgICBJY29uRGlzcGxheVR5cGU6IHN0cmluZztcbiAgICBEYXRhU291cmNlOiB7XG4gICAgICAgIFJvd3M6IFJvd0RhdGFPcHRpb25bXTtcbiAgICB9O1xuICAgIEVtcHR5Um93RGF0YTogUm93RGF0YU9wdGlvbjtcbn1cbmV4cG9ydCBjbGFzcyBSb3dEYXRhT3B0aW9uIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIElzRW1wdHk6IGJvb2xlYW47XG4gICAgdHh0OiBzdHJpbmc7XG4gICAgdHh0X3NhZmU/OiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIENhbGVuZGFyVHlwZTogc3RyaW5nO1xuICAgIERhdGVGb3JtYXQ6IHN0cmluZztcbiAgICBTaG93RGF0ZTE6IGJvb2xlYW47XG4gICAgU2hvd1RpbWUxOiBib29sZWFuO1xuICAgIFRpbWVGb3JtYXQ6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBCb29sQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBGYWxzZUNhcHRpb246IHN0cmluZztcbiAgICBUcnVlQ2FwdGlvbjogc3RyaW5nO1xuICAgIFRydWVJY29uOiBzdHJpbmc7XG4gICAgVmlld1R5cGU6IHN0cmluZztcbiAgICBGYWxzZUljb246IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIElubmVyQ3RybHI6IENvbnRyb2xJbmZvVHlwZXM7XG4gICAgRXhlY3V0YWlvblRpbWU6IHN0cmluZztcbiAgICBFZGl0VHlwZTogc3RyaW5nO1xuICAgIERvbnRTaG93UmVjYWxjdWxhdGVCdXR0b246IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgU3ViZm9ybUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgVHlwZURlZklkOiBhbnk7XG4gICAgVHlwZURlZkljb246IHN0cmluZztcbiAgICBJc0NvbXBvc2VkUmVsYXRpb246IHN0cmluZztcbiAgICBEcm9wRG93blJlcG9ydElkOiBzdHJpbmc7XG4gICAgVHlwZVZpZXdJZDogc3RyaW5nO1xuICAgIEZvcm1QYW5lbFNldHRpbmc6IEZvcm1TZXR0aW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZEZpbGVJbmZvIHtcbiAgICBmaWxlSWQ6IHN0cmluZztcbiAgICBmaWxlVXJsOiBzdHJpbmc7XG4gICAgdmlld0luQnJvd3NlcjogYm9vbGVhbjtcbiAgICBjb252ZXJ0VG86IHN0cmluZztcbiAgICBpc09mZmljZU9ubGluZTogYm9vbGVhbjtcbiAgICBmb3JPY3g6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkRmlsZUluZm9SZXN1bHQge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgc3VjY2VlZDogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBMaW5lYXJMaXN0Q29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBEZWZhdWx0RmllbGQ6IHN0cmluZztcbiAgICBFeHRyYUpzb25Qcm9wRmllbGQ6IHN0cmluZztcbiAgICBGaWxsQmVmb3JlRHJvcERvd246IGJvb2xlYW47XG4gICAgSXNHZW5lcmFsSW5mbzogYm9vbGVhbjtcbiAgICBJc011bHRpU2VsZWN0OiBib29sZWFuO1xuICAgIFJlbGF0aW9uOiBMaXN0UmVsYXRpb25Nb2RlbDtcbiAgICBSZWxhdGlvblZpZXdUeXBlOiBzdHJpbmc7XG4gICAgUm93SWNvbjogc3RyaW5nO1xuICAgIFRhcmdldFR5cGVEZWZJZDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIExpc3RSZWxhdGlvbk1vZGVsIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgQ2hpbGRGZElkOiBzdHJpbmc7XG4gICAgQ2hpbGRGZE5hbWU6IHN0cmluZztcbiAgICBJc0F1dG9TYXZlOiBib29sZWFuO1xuICAgIFBhcmVudE1vSWQ6IHN0cmluZztcbiAgICBSZWxhdGlvblR5cGU6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBTaW5nbGVSZWxhdGlvbkNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgQ29sdW1uUmVxdWVzdEVudW06IHN0cmluZztcbiAgICBEcm9wRG93blJlcG9ydElkOiBzdHJpbmc7XG4gICAgRmlsbEJlZm9yZURyb3BEb3duOiBib29sZWFuO1xuICAgIEhpZGVDb21ibzogYm9vbGVhbjtcbiAgICBSZWxhdGlvblZpZXdUeXBlOiBzdHJpbmc7XG4gICAgUGFzc1BhcmVudEZvcm06IGJvb2xlYW47XG4gICAgU2hvd05ld0J1dHRvbjogYm9vbGVhbjtcbiAgICBTaG93T2tDYW5jZWw6IGJvb2xlYW47XG4gICAgVmlld1JlbGF0ZWRGb3JtVHlwZTogc3RyaW5nO1xuICAgIFRhcmdldFR5cGVEZWZJZDogc3RyaW5nO1xuICAgIERhdGFTb3VyY2U6IHtcbiAgICAgICAgUm93czogUm93RGF0YU9wdGlvbltdO1xuICAgIH07XG4gICAgUHJldmlld0ZpZWxkQ2FwdGlvbjogc3RyaW5nO1xuICAgIFByZXZpZXdGaWVsZElkOiBzdHJpbmc7XG4gICAgUHJldmlld0ZpZWxkTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDb250cm9sSW5mb1R5cGVzID1cbiAgICB8IFN1YmZvcm1Db250cm9sSW5mb01vZGVsXG4gICAgfCBDYWxjdWxhdGVDb250cm9sSW5mb01vZGVsXG4gICAgfCBCb29sQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgRW51bUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IEljb25Db250cm9sSW5mb01vZGVsXG4gICAgfCBGaWxlQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgRGF0ZVRpbWVDb250cm9sSW5mb01vZGVsXG4gICAgfCBOdW1iZXJDb250cm9sSW5mb01vZGVsXG4gICAgfCBTdHJpbmdDb250cm9sSW5mb01vZGVsXG4gICAgfCBQaWN0dXJlRmlsZUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IEdhdWdlQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgQ29tbWFuZENvbnRyb2xJbmZvTW9kZWxcbiAgICB8IENvZGVFZGl0b3JDb250cm9sSW5mb01vZGVsO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1WaWV3U2V0dGluZyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIExheW91dDk0OiBhbnk7XG4gICAgQ29udHJvbEluZm86IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW107XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZXR0aW5nIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgRGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIE1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIH07XG4gICAgVmlldzogRm9ybVZpZXdTZXR0aW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICRGaWVsZERpY3Q/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICRSZXBvcnRJZD86IHN0cmluZztcbiAgICAkVHlwZT86IHN0cmluZztcbiAgICAkU3R5bGVJbmRleD86IG51bWJlcltdO1xuICAgICRDYXB0aW9uOiBzdHJpbmc7XG4gICAgJEljb24/OiBzdHJpbmc7XG4gICAgJFN0YXRlPzogc3RyaW5nO1xuICAgICRUeXBlRGVmSWQ/OiBzdHJpbmc7XG4gICAgJFR5cGVEZWZOYW1lPzogc3RyaW5nO1xuICAgICRDaGlsZHJlbj86IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICBJbmhlcml0YW5jZT86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgSW5oZXJpdGFuY2VJbmZvPzoge1xuICAgICAgICBDaGlsZEZpZWxkTmFtZTogc3RyaW5nO1xuICAgICAgICBQYXJlbnRGaWVsZE5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIElkOiBzdHJpbmc7XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDYWxlbmRhck1ldGFvYmplY3REYXRhTW9kZWwgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAkQ29sb3I6IHN0cmluZztcbiAgICAkTW9tZW50U3RhcnREYXRlOiBzdHJpbmc7XG4gICAgJE1vbWVudEVuZERhdGU6IHN0cmluZztcbiAgICAkU3RhcnRUaW1lczogc3RyaW5nO1xuICAgICRFbmRUaW1lczogc3RyaW5nO1xuICAgICRUaXRsZTogc3RyaW5nO1xuICAgICROb3Rlczogc3RyaW5nO1xuICAgICRTdGFydERhdGVJbmZvPzogRGF0ZUluZm9TZXJ2aWNlO1xuICAgICRFbmREYXRlSW5mbz86IERhdGVJbmZvU2VydmljZTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vRm9yUmVwb3J0TW9kZWwge1xuICAgICRUeXBlPzogc3RyaW5nO1xuICAgIFR5cGVEZWZJZDogc3RyaW5nO1xuICAgIFJlcG9ydElkOiBzdHJpbmc7XG4gICAgSWNvbj86IHN0cmluZztcbiAgICBNb0RhdGFMaXN0OiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICBEZWxldGVkTGlzdDogQXJyYXk8eyBJZDogc3RyaW5nOyBUeXBlRGVmSWQ6IHN0cmluZyB9PjtcbiAgICBBZGRlZExpc3Q6IEFycmF5PHsgSWQ6IHN0cmluZzsgVHlwZURlZklkOiBzdHJpbmcgfT47XG4gICAgUGFnaW5nOiBQYWdpbmdTZXR0aW5nO1xuICAgIFJlbGF0aW9uPzoge1xuICAgICAgICBSZWxhdGlvblR5cGU6IHN0cmluZztcbiAgICAgICAgUGFyZW50TW9JZDogc3RyaW5nO1xuICAgICAgICBQYXJlbnRGZElkOiBzdHJpbmc7XG4gICAgICAgIENoaWxkRmRJZDogc3RyaW5nO1xuICAgICAgICBQYXJlbnRGZE5hbWU6IHN0cmluZztcbiAgICAgICAgQ2hpbGRGZE5hbWU6IHN0cmluZztcbiAgICAgICAgUGFzc1BhcmVudE1vRmllbGQ6IHN0cmluZztcbiAgICAgICAgSXNBdXRvU2F2ZTogYm9vbGVhbjtcbiAgICAgICAgSXNBdXRvU2F2ZV9SZWxvYWRQYXJlbnRGb3JtczogYm9vbGVhbjtcbiAgICAgICAgSXNBdXRvU2F2ZV9SZWxvYWRSb290UGFyZW50TGlzdDogYm9vbGVhbjtcbiAgICB9O1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLkRlbGV0ZWRMaXN0ID0gdGhpcy5BZGRlZExpc3QgPSB0aGlzLk1vRGF0YUxpc3QgPSBbXTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUmVwb3J0QmFzZUluZm8ge1xuICAgIElkOiBzdHJpbmc7XG4gICAgQ2FwdGlvbjogc3RyaW5nO1xuICAgIEZvbGRlcklkOiBzdHJpbmc7XG4gICAgSWNvblVybDogc3RyaW5nO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBSZXBvcnRJZDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIFJlcG9ydEV4dHJhSW5mbyBleHRlbmRzIFJlcG9ydEJhc2VJbmZvIHtcbiAgICBUeXBlRGVmSWQ6IHN0cmluZztcbiAgICBUeXBlRGVmQ2FwdGlvbjogc3RyaW5nO1xuICAgIFJlcG9ydFR5cGU6IHN0cmluZztcbiAgICBIaWRlVG9vbGJhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGFvYmplY3RSZWxhdGlvbk1vZGVsIGV4dGVuZHMgTGlzdFJlbGF0aW9uTW9kZWwge1xuICAgIFBhcmVudEZkSWQ6IHN0cmluZztcbiAgICBQYXNzUGFyZW50TW9GaWVsZDogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBGaWVsZEluZm9UeXBlRW51bSB7XG4gICAgSW50SW5mbyA9IDAsXG4gICAgU3RyaW5nSW5mbyA9IDIsXG4gICAgRGF0ZUluZm8gPSAzLFxuICAgIEJvb2xJbmZvID0gNSxcbiAgICBFbnVtSW5mbyA9IDYsXG4gICAgVXNlckluZm8gPSA3LFxuICAgIENhdGVnb3J5SW5mbyA9IDgsXG4gICAgTWV0YU9iamVjdEluZm8gPSA5LFxuICAgIENvbW1hbmRJbmZvID0gMTAsIC8vIDB4MDAwMDAwMEFcbiAgICBQaWN0dXJlc0luZm8gPSAxMSwgLy8gMHgwMDAwMDAwQlxuICAgIFJlbGF0aW9uSW5mbyA9IDEyLCAvLyAweDAwMDAwMDBDXG4gICAgSGlzdG9yeUluZm8gPSAxMywgLy8gMHgwMDAwMDAwRFxuICAgIFJlbGF0aW9uSW5mb1JldmVyc2VfQWtzTGlzdGkgPSAxNCwgLy8gMHgwMDAwMDAwRVxuICAgIENyZWF0b3JVc2VySW5mbyA9IDE1LCAvLyAweDAwMDAwMDBGXG4gICAgQ3JlYXRpb25EYXRlSW5mbyA9IDE2LCAvLyAweDAwMDAwMDEwXG4gICAgTGFzdFVwZGF0ZURhdGVJbmZvID0gMTcsIC8vIDB4MDAwMDAwMTFcbiAgICBSZW1pbmRlckluZm8gPSAxOCwgLy8gMHgwMDAwMDAxMlxuICAgIFJpY2hTdHJpbmdJbmZvID0gMTksIC8vIDB4MDAwMDAwMTNcbiAgICBDb252ZXJ0Q29tbWFuZEluZm8gPSAyMCwgLy8gMHgwMDAwMDAxNFxuICAgIFJlbGF0aW9uSW5mb1NpbmdsZVJldmVyc2VfQWtzVGFraUxpc3RpID0gMjEsIC8vIDB4MDAwMDAwMTVcbiAgICBEaWFsQ29tbWFuZEluZm8gPSAyMiwgLy8gMHgwMDAwMDAxNlxuICAgIEZpbmRDb250YWN0Q29tbWFuZEluZm8gPSAyMywgLy8gMHgwMDAwMDAxN1xuICAgIFNlcXVlbmNlQ29tbWFuZEluZm8gPSAyNCwgLy8gMHgwMDAwMDAxOFxuICAgIEN1cnJlbmN5SW5mbyA9IDI1LCAvLyAweDAwMDAwMDE5XG4gICAgU2luZ2xlUGljdHVyZUluZm8gPSAyNiwgLy8gMHgwMDAwMDAxQVxuICAgIFdvcmRSZXBvcnRDb21tYW5kSW5mbyA9IDI3LCAvLyAweDAwMDAwMDFCXG4gICAgSGllcmFyY2hpY2FsSW5mbyA9IDI4LCAvLyAweDAwMDAwMDFDXG4gICAgVGltZVNwYW5JbmZvID0gMjksIC8vIDB4MDAwMDAwMURcbiAgICBSZXBvcnRJbmZvID0gMzAsIC8vIDB4MDAwMDAwMUVcbiAgICBGaWxlSW5mbyA9IDMxLCAvLyAweDAwMDAwMDFGXG4gICAgV29yZEZpbGVJbmZvID0gMzIsIC8vIDB4MDAwMDAwMjBcbiAgICBQaWN0dXJlRmlsZUluZm8gPSAzMywgLy8gMHgwMDAwMDAyMVxuICAgIEdhdWdlSW5mbyA9IDM0LCAvLyAweDAwMDAwMDIyXG4gICAgQ29kZUluZm8gPSAzNSwgLy8gMHgwMDAwMDAyM1xuICAgIFdvcmtDZW50ZXJJbmZvID0gMzYsIC8vIDB4MDAwMDAwMjRcbiAgICBJc0RlbGV0ZWRJbmZvID0gMzcsIC8vIDB4MDAwMDAwMjVcbiAgICBSb3dOdW1iZXJJbmZvID0gMzgsIC8vIDB4MDAwMDAwMjZcbiAgICBCaW5hcnlJbmZvID0gMzksIC8vIDB4MDAwMDAwMjdcbiAgICBSZXZlcnNlTWV0YU9iamVjdEluZm9fQWtzVGFraVRha2kgPSA0MCwgLy8gMHgwMDAwMDAyOFxuICAgIENvbG9ySW5mbyA9IDQxLCAvLyAweDAwMDAwMDI5XG4gICAgSWNvbkluZm8gPSA0MiwgLy8gMHgwMDAwMDAyQVxuICAgIFJlZnJlc2hGaWVsZENvbW1hbmRJbmZvID0gNDMsIC8vIDB4MDAwMDAwMkJcbiAgICBSZWZlcmVuY2VGaWVsZEluZm8gPSA0NCwgLy8gMHgwMDAwMDAyQ1xuICAgIFNlYXJjaENvbW1hbmRJbmZvID0gNDUsIC8vIDB4MDAwMDAwMkRcbiAgICBPcmRlckluZm8gPSA0NiAvLyAweDAwMDAwMDJFXG59XG5leHBvcnQgaW50ZXJmYWNlIENsYXNzTmFtZXNNb2RlbCB7XG4gICAgQ29tbWFuZEJhckNsYXNzOiBzdHJpbmc7XG4gICAgRGF0YUNsYXNzOiBzdHJpbmc7XG4gICAgU2VsZWN0aW9uQ2xhc3M6IHN0cmluZztcbiAgICBWaWV3ZXJDbGFzczogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBFeHRyYU1vZGVsIHtcbiAgICBDdXN0b21Db21tYW5kcz86IEN1c3RvbUNvbW1hbmRbXTtcbiAgICBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M/OiBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M7XG4gICAgUGFyZW50VWx2Q29uZmlnPzogYW55O1xuICAgIFJlbGF0aW9uPzogTWV0YW9iamVjdFJlbGF0aW9uTW9kZWw7XG4gICAgUmVwb3J0PzogUmVwb3J0RXh0cmFJbmZvO1xuICAgIEV4dHJhSnNvblByb3BSZXBvcnQ/OiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlUmVwb3J0TW9kZWwge1xuICAgIENsYXNzTmFtZXM6IENsYXNzTmFtZXNNb2RlbDtcbiAgICBFeHRyYTogRXh0cmFNb2RlbDtcbiAgICBWaWV3OiBWaWV3VHlwZXM7XG4gICAgU2VhcmNoUGFuZWw6IGFueTtcbiAgICBEZWZhdWx0SXRlbUNvbXBvbmVudCA9ICdSZXBvcnREZWZhdWx0SXRlbUNvbXBvbmVudCc7XG59XG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRDb21tYW5kc0FjY2VzcyB7XG4gICAgQWRkOiBib29sZWFuO1xuICAgIEFkZFRvTGlzdDogYm9vbGVhbjtcbiAgICBEZWxldGU6IGJvb2xlYW47XG4gICAgRWRpdDogYm9vbGVhbjtcbiAgICBFeHBvcnQ6IGJvb2xlYW47XG4gICAgUHJpbnQ6IGJvb2xlYW47XG4gICAgUmVmcmVzaDogYm9vbGVhbjtcbiAgICBSZW1vdmVGcm9tTGlzdDogYm9vbGVhbjtcbiAgICBWaWV3OiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIEN1c3RvbUNvbW1hbmQge1xuICAgIERhdGE6IGFueTtcbiAgICBEaXNhYmxlV2hlblJlYWRvbmx5OiBib29sZWFuO1xuICAgIEhpZGVEaXNhYmxlOiBib29sZWFuO1xuICAgIEljb25Vcmw6IHN0cmluZztcbiAgICBJc0xhcmdlOiBib29sZWFuO1xuICAgIE15dHlwZTogc3RyaW5nO1xuICAgIE9yZGVyOiBudW1iZXI7XG4gICAgU2hvd09uQ29udGV4dDogYm9vbGVhbjtcbiAgICBTaG93T25Ub29sYmFyOiBib29sZWFuO1xuICAgIFRleHQ6IHN0cmluZztcbiAgICBVc2VBbHdheXM6IGJvb2xlYW47XG4gICAgVXNlRm9yTXVsdGk6IGJvb2xlYW47XG4gICAgVXNlRm9yU2luZ2xlOiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIFJlcG9ydE1vZGVsIGV4dGVuZHMgQmFzZVJlcG9ydE1vZGVsIHtcbiAgICBEYXRhOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBSZXBvcnRMaXN0TW9kZWwgZXh0ZW5kcyBCYXNlUmVwb3J0TW9kZWwge1xuICAgIFZpZXc6IEdyaWRWaWV3O1xufVxuZXhwb3J0IGNsYXNzIFJlcG9ydEZvcm1Nb2RlbCBleHRlbmRzIEJhc2VSZXBvcnRNb2RlbCB7XG4gICAgVmlldzogRm9ybVZpZXc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRyZWVWaWV3IHtcbiAgICBDb25kaXRpb25hbEZvcm1hdHM6IFtdO1xuICAgIFBhcmVudElkRGJOYW1lOiBzdHJpbmc7XG4gICAgU2hvd1NlbGVjdGlvbkNoZWNrczogYm9vbGVhbjtcbiAgICBUcmVlQXV0b09wZW5MZXZlbHM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmlkVmlldyB7XG4gICAgQWxsb3dHcmlkQ29sdW1uU29ydDogYm9vbGVhbjtcbiAgICBBdXRvSW5saW5lRWRpdDogYm9vbGVhbjtcbiAgICBDb2x1bW5SZXF1ZXN0RW51bTogc3RyaW5nO1xuICAgIENvbHVtbnM6IEFycmF5PFJlcG9ydFZpZXdDb2x1bW4+O1xuICAgIENvbmRpdGlvbmFsRm9ybWF0czogW107XG4gICAgRGlzYWJsZVJvd1JlbG9hZDogYm9vbGVhbjtcbiAgICBHcmlkU2V0dGluZzogR3JpZFNldHRpbmc7XG4gICAgR3JpZF9GcmVlQ29sdW1uU2l6aW5nOiBib29sZWFuO1xuICAgIEdyaWRfR3JpZExpbmVzOiBzdHJpbmc7XG4gICAgR3JpZF9IaWRlSGVhZGVyOiBib29sZWFuO1xuICAgIEdyaWRfU2hvd1Jvd051bWJlcjogYm9vbGVhbjtcbiAgICBIYXNDb25kaXRpb25hbEZvcm1hdDogYm9vbGVhbjtcbiAgICBIYXNTdW1tYXJ5Um93OiBib29sZWFuO1xuICAgIEhpZGVJY29uOiBib29sZWFuO1xuICAgIElzQ2hlY2tMaXN0OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclZpZXcge1xuICAgIENhbGVuZGFyRmllbGRzOiBDYWxlbmRhckZpZWxkcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVZpZXcge1xuICAgIEZvcm1QYW5lbFNldHRpbmc6IGFueTtcbn1cbmV4cG9ydCB0eXBlIFZpZXdUeXBlcyA9IEdyaWRWaWV3IHwgQ2FsZW5kYXJWaWV3IHwgVHJlZVZpZXcgfCBGb3JtVmlldztcblxuZXhwb3J0IHR5cGUgUmVwb3J0TW9kZWxUeXBlcyA9IFJlcG9ydExpc3RNb2RlbCB8IFJlcG9ydENhbGVuZGFyTW9kZWwgfCBSZXBvcnRGb3JtTW9kZWwgfCBSZXBvcnRUcmVlTW9kZWw7XG5cbmV4cG9ydCBjbGFzcyBSZXBvcnRDYWxlbmRhck1vZGVsIGV4dGVuZHMgQmFzZVJlcG9ydE1vZGVsIHtcbiAgICBWaWV3OiBDYWxlbmRhclZpZXc7XG59XG5leHBvcnQgY2xhc3MgUmVwb3J0VHJlZU1vZGVsIGV4dGVuZHMgQmFzZVJlcG9ydE1vZGVsIHtcbiAgICBWaWV3OiBUcmVlVmlldztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJGaWVsZHMge1xuICAgIEVuZERhdGU6IHN0cmluZztcbiAgICBOb3Rlczogc3RyaW5nO1xuICAgIFN0YXJ0RGF0ZTogc3RyaW5nO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgQ29sb3I6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJlcG9ydFZpZXdDb2x1bW4ge1xuICAgIEFsaWFzOiBzdHJpbmc7XG4gICAgQ2FwdGlvbjogc3RyaW5nO1xuICAgIEZpZWxkRGVmSWQ6IHN0cmluZztcbiAgICBGaWVsZFR5cGVJZDogbnVtYmVyO1xuICAgIEZpZWxkVHlwZTogc3RyaW5nO1xuICAgIEhhc1N1bW1hcnk6IGJvb2xlYW47XG4gICAgSGlkZGVuOiBib29sZWFuO1xuICAgIElzTHRyOiBib29sZWFuO1xuICAgIElzUHJldmlldzogYm9vbGVhbjtcbiAgICBNZXRhRmllbGRUeXBlSWQ6IHN0cmluZztcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgV2lkdGg6IG51bWJlcjtcbiAgICBUYWc/OiBzdHJpbmc7XG4gICAgSWNvbjogc3RyaW5nO1xuICAgIE9ubHlJbWFnZT86IGJvb2xlYW47XG4gICAgRXh0cmE/OiBhbnk7XG4gICAgJFdpZHRoOiBzdHJpbmc7XG4gICAgJFdpZHRoMj86IHN0cmluZztcbiAgICAkTWVyZ2VkRmllbGRzVG9Db2x1bW4/OiBzdHJpbmdbXTtcbiAgICAkQ1NTQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICRDdXN0b21Db21wb25lbnQ/OiBFanJheU9sZ287XG4gICAgJFRleHRXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEdyaWRTZXR0aW5nIHtcbiAgICBDb2xTZXR0aW5nTGlzdDogQXJyYXk8Q29sU2V0dGluZz47XG4gICAgU29ydFNldHRpbmdMaXN0OiBBcnJheTxTb3J0U2V0dGluZz47XG4gICAgQXV0b1NpemVDb2x1bW5zOiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIENvbFNldHRpbmcge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIElzSGlkZGVuOiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIFNvcnRTZXR0aW5nIHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgU29ydERpcmVjdGlvbjogc3RyaW5nO1xuICAgIElzR3JvdXBlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFJlcG9ydEZpZWxkIHtcbiAgICBwdWJsaWMga2V5OiBzdHJpbmc7XG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG4gICAgcHVibGljIGNhcHRpb246IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uLCBwdWJsaWMgaXRlbTogYW55KSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBjb2x1bW4uTmFtZTtcbiAgICAgICAgdGhpcy5jYXB0aW9uID0gY29sdW1uLkNhcHRpb247XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1bbmFtZV07XG4gICAgICAgIGlmIChOdW1iZXIoY29sdW1uLkZpZWxkVHlwZUlkKSA9PT0gRmllbGRJbmZvVHlwZUVudW0uRGF0ZUluZm8pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1bbmFtZSArICckQ2FwdGlvbiddO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoY29sdW1uLkZpZWxkVHlwZUlkKSA9PT0gRmllbGRJbmZvVHlwZUVudW0uSWNvbkluZm8pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1bbmFtZV0uVXJsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luUmVzdWx0IHtcbiAgICBkYXRhOiB7IHN0aDogc3RyaW5nIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgUGxhY2VIb2xkZXJzPzogUGxhY2VIb2xkZXJEYXRhTW9kZWxbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgU2VsZWN0b3I6IHN0cmluZztcbiAgICBTZXR0aW5nczogQ29tcG9uZW50U2V0dGluZ3NEYXRhTW9kZWw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlSG9sZGVyRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgSXNQYWdlOiBib29sZWFuO1xuICAgIE9yZGVyTnVtYmVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBQbGFjZUhvbGRlcjogUGxhY2VIb2xkZXJEYXRhTW9kZWw7XG4gICAgQ29tcG9uZW50OiBDb21wb25lbnREYXRhTW9kZWw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VMaXN0UmVwb3J0TW9kZWwgZXh0ZW5kcyBNb0ZvclJlcG9ydE1vZGVsIHtcbiAgICBNb0RhdGFMaXN0OiBBcnJheTxQYWdlRGF0YU1vZGVsPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlTGlzdFJlcG9ydE1vZGVsIGV4dGVuZHMgTW9Gb3JSZXBvcnRNb2RlbCB7XG4gICAgTW9EYXRhTGlzdDogQXJyYXk8TW9kdWxlRGF0YU1vZGVsPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZURhdGFNb2RlbCBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIENvbXBvbmVudDogQ29tcG9uZW50RGF0YU1vZGVsO1xuICAgIE1vZHVsZUxpc3Q6IE1vZHVsZUxpc3RSZXBvcnRNb2RlbDtcbiAgICBDaGlsZFBhZ2VMaXN0OiBQYWdlTGlzdFJlcG9ydE1vZGVsO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgUm91dGU6IHN0cmluZztcbiAgICBJc0RlZmF1bHRSb3V0ZTogYm9vbGVhbjtcbiAgICBJc0xvZ2luUm91dGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGFsRGF0YU1vZGVsIGV4dGVuZHMgUGFnZURhdGFNb2RlbCB7XG4gICAgSXNBY3RpdmU6IGJvb2xlYW47XG4gICAgSXNQd2E6IGJvb2xlYW47XG4gICAgUG9ydGFsU2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XG59XG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwVmlzaWJpbGl0eSB7XG4gICAgZW5hYmxlOiBib29sZWFuO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUhlYWRlckxheW91dCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgU3VidGl0bGU6IHN0cmluZztcbiAgICBBdmF0YXI6IGFueTtcbiAgICBGYWNldExpc3Q6IHsgTW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW0ge1xuICAgIGljb246IHN0cmluZztcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgaXRlbUlkOiBzdHJpbmc7XG4gICAgRGF0YTogYW55O1xuICAgIENvbW1hbmQ6IGFueTtcbiAgICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIElzQnVpbHRpbj86IGJvb2xlYW47XG4gICAgbWVudT86IHsgaXRlbXM6IE1lbnVJdGVtW10gfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5nU2V0dGluZyB7XG4gICAgRW5kSW5kZXg6IG51bWJlcjtcbiAgICBIYXNQYWdpbmc6IGJvb2xlYW47XG4gICAgUGFnZTogbnVtYmVyO1xuICAgIFBhZ2VTaXplOiBudW1iZXI7XG4gICAgUm93Q291bnQ6IG51bWJlcjtcbiAgICBTdGFydEluZGV4OiBudW1iZXI7XG4gICAgVG90YWxQYWdlczogbnVtYmVyO1xuICAgIFRvdGFsUm93czogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5JbmZvVHlwZSB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIEhpZGRlbjogYm9vbGVhbjtcbiAgICBDYXB0aW9uOiBzdHJpbmc7XG4gICAgSXNNYW5kYXRvcnk/OiBib29sZWFuO1xuICAgIFdpZHRoOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFBhbmVsU2V0dGluZ3MgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIFJlcG9ydElkOiBzdHJpbmc7XG4gICAgSXNEZWZhdWx0OiBib29sZWFuO1xuICAgIElzUHVibGljOiBib29sZWFuO1xuICAgIEFwcGx5QXV0b21hdGljYWxseTogYm9vbGVhbjtcbiAgICBTZWFyY2hNbz86IHN0cmluZztcbiAgICBGaWVsZHNTZXR0aW5nPzogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgdHlwZSBEZXZpY2VTaXplID0gJ2Rlc2t0b3AnIHwgJ21vYmlsZScgfCAndGFibGV0JztcbmV4cG9ydCBjb25zdCBEYXRlUmFuZ2VzID0gW1xuICAgICdEYXRlUl9Ob25lJyxcbiAgICAnRGF0ZVJfU3BlY2lmaWNSYW5nZScsXG4gICAgJ0RhdGVSX1RvZGF5JyxcbiAgICAnRGF0ZVJfVGhpc1dlZWsnLFxuICAgICdEYXRlUl9UaGlzTW9udGgnLFxuICAgICdEYXRlUl9UaGlzWWVhcicsXG4gICAgJ0RhdGVSX0RheXNCZWZvcmUnLFxuICAgICdEYXRlUl9QcmV2V2VlaycsXG4gICAgJ0RhdGVSX1ByZXZNb250aCcsXG4gICAgJ0RhdGVSX1ByZXZZZWFyJyxcbiAgICAnRGF0ZVJfRGF5c0FmdGVyJyxcbiAgICAnRGF0ZVJfTmV4dFdlZWsnLFxuICAgICdEYXRlUl9OZXh0TW9udGgnLFxuICAgICdEYXRlUl9OZXh0WWVhcidcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVWlSZXBvcnRWaWV3QmFzZSB7XG4gICAgVWlDb21wb25lbnQ6IHtcbiAgICAgICAgQ29tcG9uZW50OiBib29sZWFuO1xuICAgICAgICBNb2R1bGU6IHN0cmluZztcbiAgICAgICAgTW9kdWxlRmlsZU5hbWU6IHN0cmluZztcbiAgICAgICAgTmFtZTogc3RyaW5nO1xuICAgICAgICBTZWxlY3Rvcjogc3RyaW5nO1xuICAgICAgICBTZXR0aW5nczogVWlSZXBvcnRWaWV3QmFzZVNldHRpbmc7XG4gICAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVWlSZXBvcnRWaWV3QmFzZVNldHRpbmcge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgSWNvbjogc3RyaW5nO1xuICAgIElzRGVmYXVsdDogYm9vbGVhbjtcbiAgICBIaWRkZW46IGJvb2xlYW47XG4gICAgRW5hYmxlU2VhcmNoOiBib29sZWFuO1xuICAgIERpc2FibGVSZXNwb25zaXZlPzogYm9vbGVhbjtcbiAgICBEaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudT86IGJvb2xlYW47XG4gICAgSG9yaXpvbnRhbEdyb3VwQnk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0U2V0dGluZyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIFRpdGxlPzogc3RyaW5nO1xuICAgIHh0eXBlOiBzdHJpbmc7XG4gICAgVGV4dFZpc2libGU/OiBib29sZWFuO1xuICAgIGl0ZW1zOiBMYXlvdXRTZXR0aW5nW107XG4gICAgSXNSb290PzogYm9vbGVhbjtcbiAgICBTZWxlY3RlZFRhYlBhZ2VOYW1lPzogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgdHlwZSBBYmJyZXZhdGlvbkRldmljZVNpemUgPSAncycgfCAnbScgfCAnbCcgfCAneGwnO1xuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZU9iaiB7XG4gICAgaXNFeHBhbmQ6IGJvb2xlYW47XG4gICAgdmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgICBleHBhbmQ6ICgpID0+IHZvaWQ7XG4gICAgY29sbGFwc2U6ICgpID0+IHZvaWQ7XG4gICAgRGF0YTogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBjaGlsZHJlbjogVHJlZU5vZGVPYmpbXTtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgbGVhZjogYm9vbGVhbjtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgbGV2ZWw6IG51bWJlcjtcbiAgICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgICBoYXNPbmVEZXB0aExldmVsPzogYm9vbGVhbjtcbiAgICBwYXJlbnROb2RlOiBUcmVlTm9kZU9iaiB8IG51bGw7XG4gICAgZmlyc3RDaGlsZDogVHJlZU5vZGVPYmogfCBudWxsO1xuICAgIGxhc3RDaGlsZDogVHJlZU5vZGVPYmogfCBudWxsO1xuICAgIHByZXZpb3VzU2libGluZzogVHJlZU5vZGVPYmogfCBudWxsO1xuICAgIG5leHRTaWJsaW5nOiBUcmVlTm9kZU9iaiB8IG51bGw7XG4gICAgYXR0cmlidXRlczogeyBEYXRhOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCB9O1xuICAgIGhhc0NoaWxkTm9kZXM6ICgpID0+IGJvb2xlYW47XG4gICAgbm9Ecm9wOiBib29sZWFuO1xuICAgICRDaGlsZHJlbj86IFRyZWVOb2RlT2JqW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uUmVzaXplZEFyZ3Mge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB3aWR0aDogbnVtYmVyO1xufVxuZXhwb3J0IHR5cGUgY29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3MgPSB7IGNvbHVtbnM6IEFycmF5PFJlcG9ydFZpZXdDb2x1bW4+OyByZXNpemVkOiBBcnJheTxDb2x1bW5SZXNpemVkQXJncz4gfTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uSXRlbVR5cGUgPSB7XG4gICAgSWQ6IHN0cmluZztcbiAgICBTb3VyY2VUeXBlRGVmSWQ6IHN0cmluZztcbiAgICBPYmplY3RJblJlbGF0aW9uTmFtZTogc3RyaW5nO1xuICAgIEdyb3VwQ2FwdGlvbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFanJheU9sZ28gZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBNb2R1bGU6IHN0cmluZztcbiAgICBNb2R1bGVGaWxlTmFtZTogc3RyaW5nO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBTZWxlY3Rvcjogc3RyaW5nO1xuICAgIFBhcmFtZXRlcnM/OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIFNldHRpbmdzPzogTWV0YW9iamVjdERhdGFNb2RlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXBsb2FkaW5nU3RhdGUge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHVwbG9hZGluZzogYm9vbGVhbjtcbiAgICBzdGF0ZTogJ1VwbG9hZGluZycgfCAnRXJyb3InIHwgJ0NvbXBsZXRlJyB8ICdTdGFydCc7XG4gICAgcHJvZ3Jlc3M6IGFueTtcbn1cbmV4cG9ydCB0eXBlIEdyb3VwQnlJdGVtID0geyBba2V5OiBzdHJpbmddOiBhbnk7IGlkOiBzdHJpbmc7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55W10gfTtcbmV4cG9ydCB0eXBlIE5vdGlmeU9wdGlvbnMgPSB7XG4gICAgU291bmQ6IGJvb2xlYW47IC8vIFNvdW5kIG9mIG5vdGlmaWNhdGlvbi4gU2V0IHRoaXMgZmFsc2UgdG8gZGlzYWJsZSBzb3VuZC5cbiAgICBJbWFnZTogc3RyaW5nIHwgbnVsbDsgLy8gSW1hZ2Ugc291cmNlIHN0cmluZ1xuICAgIFRpdGxlOiBzdHJpbmcgfCBudWxsOyAvLyBUaXRsZSBvZiBub3RpZmljYXRpb24uIElmIHlvdSBkbyBub3QgaW5jbHVkZSB0aGUgdGl0bGUgaW4gb3B0aW9ucyBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZXMgaXRzIHZhbHVlXG4gICAgSWNvbjogYm9vbGVhbjsgLy8gSWNvbiBvZiBub3RpZmljYXRpb24uIExlYXZlIGFzIGlzIGZvciBkZWZhdWx0IGljb24gb3Igc2V0IGN1c3RvbSBzdHJpbmdcbiAgICBEZWxheTogbnVtYmVyOyAvLyBIaWRlIG5vdGlmaWNhdGlvbiBhZnRlciB0aGlzIHRpbWUgKGluIG1pbGlzZWNvbmRzKVxuICAgIENsb3NhYmxlOiBib29sZWFuOyAvLyBNYWtlIG5vdGlmaWNhdGlvbnMgY2xvc2FibGVcbiAgICBEZWxheUluZGljYXRvcjogYm9vbGVhbjsgLy8gU2hvdyB0aW1lciBpbmRpY2F0b3JcbiAgICBDbG9zZU9uQ2xpY2s6IGJvb2xlYW47IC8vIENsb3NlIG5vdGlmaWNhdGlvbnMgYnkgY2xpY2tpbmcgb24gdGhlbVxuICAgIElzUnRsOiBib29sZWFuO1xuICAgIFBvc2l0aW9uOiBzdHJpbmcgfCBvYmplY3Q7IC8vIEF2YWlsYWJsZSBvcHRpb25zOiBcInRvcCBsZWZ0XCIsIFwidG9wIHJpZ2h0XCIsIFwiYm90dG9tIGxlZnRcIiwgXCJib3R0b20gcmlnaHRcIiwgXCJjZW50ZXIgdG9wXCIsIFwiY2VudGVyIGJvdHRvbVwiXG4gICAgU291bmRQYXRoOiBzdHJpbmc7IC8vIFRoZSBmb2xkZXIgcGF0aCB3aGVyZSBzb3VuZHMgYXJlIGxvY2F0ZWRcbiAgICBTaXplOiBzdHJpbmc7IC8vIG5vcm1hbCwgbWluaSwgbGFyZ2VcbiAgICBDb250aW51ZURlbGF5T25JbmFjdGl2ZVRhYjogYm9vbGVhbjsgLy8gQ29udGludWUgZGVsYXkgd2hlbiBicm93c2VyIHRhYiBpcyBpbmFjdGl2ZVxuICAgIFdpZHRoOiBudW1iZXI7IC8vIFdpZHRoIG9mIG5vdGlmaWNhdGlvbiBib3hcbiAgICBNZXNzYWdlSGVpZ2h0OiBudW1iZXI7IC8vIE5vdGlmaWNhdGlvbiBtZXNzYWdlIG1heGltdW0gaGVpZ2h0LlxuICAgIE5vdGlmaWNhdGlvbkl0ZW0/OiBOb3RpZmljYXRpb25JdGVtO1xufTtcbmV4cG9ydCB0eXBlIFNoYXJlQnV0dG9uc0Nob2ljZURlZiA9IHtcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xuICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIGNob2ljZUxpc3Q6IENob2ljZURlZltdO1xuICAgIGFkZDogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBDaG9pY2VEZWYgPSB7XG4gICAgQWN0aXZpdHlEZWZJZDogc3RyaW5nO1xuICAgIEFjdGl2aXR5UnVuSWQ6IHN0cmluZztcbiAgICBDaG9pY2VEZWZJZDogc3RyaW5nO1xuICAgIENob2ljZU5hbWU/OiBzdHJpbmc7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBJY29uPzogc3RyaW5nO1xuICAgIEhhc0Jhcj86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgV29ya2Zsb3dFeGVjdXRlQ2hvaWNlU3RhdHVzID0ge1xuICAgIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcmVzdWx0OiBhbnk7XG4gICAgZXJyb3I6IGFueTtcbiAgICBjaG9pY2U/OiBDaG9pY2VEZWY7XG59O1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUGF5bG9hZCA9IHtcbiAgICBtc2c6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBpbWFnZTogc3RyaW5nO1xuICAgIG1vO1xuICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucztcbiAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uQWN0aW9uID0ge1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgSWQ6IHN0cmluZztcbiAgICBJY29uOiBzdHJpbmc7XG4gICAgU3RhdHVzOiBzdHJpbmcgfCBhbnk7XG59O1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uSXRlbSA9IE1ldGFvYmplY3REYXRhTW9kZWwgJiB7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBVbnJlYWQ6IGJvb2xlYW47XG4gICAgQ29udGVudDogc3RyaW5nO1xuICAgICRTYWZlQ29udGVudD86IFNhZmVIdG1sO1xuICAgIFByaW9yaXR5OiBudW1iZXI7XG4gICAgU3ViamVjdDogc3RyaW5nO1xuICAgIFRhZzogc3RyaW5nO1xuICAgIEljb246IHN0cmluZztcbiAgICBJbWFnZTogc3RyaW5nO1xuICAgIENyZWF0aW9uRGF0ZTogRGF0ZTtcbiAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogc3RyaW5nO1xuICAgIFVpQWN0aW9ucz86IE5vdGlmaWNhdGlvbkFjdGlvbltdO1xuICAgICRDaG9pY2VEZWZTdGF0dXM/OiBXb3JrZmxvd0V4ZWN1dGVDaG9pY2VTdGF0dXM7XG59O1xuXG5leHBvcnQgdHlwZSBFeE5vdGlmaWNhdGlvblBheWxvYWQgPSB7XG4gICAgbGFuZzogc3RyaW5nO1xuICAgIGlzUnRsOiBib29sZWFuO1xuICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07XG59O1xuZXhwb3J0IHR5cGUgRm9ybVZpc2liaWxpdHlTdGF0dXMgPSAnUGVuZGluZycgfCAnVmlzaWJsZSc7XG5leHBvcnQgdHlwZSBDYXJ0YWJsZVRlbXBsYXRlS2V5ID0geyBUeXBlRGVmSWQ6IHN0cmluZzsgU2V0dGluZ3NJZDogc3RyaW5nIH07XG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcbiAgICBOT05FID0gJ25vbmUnLFxuICAgIEFTQyA9ICdhc2MnLFxuICAgIERFU0MgPSAnZGVzYydcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvblNvcnQge1xuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsO1xuICAgIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbiAgICBpc051bWJlcj86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaElucHV0IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25Hcm91cCB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gICAgc2hvd0FzQ29sdW1uOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25QYWdlIHtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIGN1cnJlbnRQYWdlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvblN0YXRlIHtcbiAgICBzb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W107XG4gICAgZ3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW107XG4gICAgcGFnZTogQ29sbGVjdGlvblBhZ2U7XG4gICAgc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3RhdGUgZXh0ZW5kcyBDb2xsZWN0aW9uU3RhdGUge1xuICAgIGNvbHVtbnM6IHN0cmluZ1tdO1xuICAgIGNvbHVtbktleXM6IHN0cmluZ1tdO1xuICAgIGZyZWV6ZVRvQ29sdW1uOiBzdHJpbmcgfCBudWxsO1xufVxuZXhwb3J0IGVudW0gU2VsZWN0aW9uTW9kZSB7XG4gICAgU0lOR0xFID0gJ3NpbmdsZScsXG4gICAgTVVMVElQTEUgPSAnbXVsdGlwbGUnLFxuICAgIE5PTkUgPSAnbm9uZSdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVVsdk1haW5DdHJsciB7XG4gICAgQWRhcHRlcjogYW55O1xuICAgIFNldHRpbmc6IGFueTtcbiAgICBTeXN0ZW06IGFueTtcbiAgICBVbHZQYXJhbXM6IGFueTtcbiAgICBGZWF0dXJlczogYW55O1xuICAgIFVpT3ZlcnJpZGU6IGFueTtcbiAgICBTZWFyY2hQYW5lbEN0cmxyOiBhbnk7XG4gICAgU2VsZWN0aW9uQWRhcHRlcjogYW55O1xuICAgIERhdGFDdHJscjogVHlwZVVsdkRhdGFDdHJscjtcbiAgICBDb21tYW5kQmFyQ3RybHI6IGFueTtcbiAgICBWaWV3ZXJBZGFwdGVyOiBhbnk7XG4gICAgUGFyZW50TW86IGFueTtcbiAgICBGaWVsZEN0cmxyOiBhbnk7XG4gICAgaXNNYW5kYXRvcnk6IGJvb2xlYW47IC8vIHBvcnRhbCB1c2UgaXQuIGNvbXBvbmVudCBtYWRhcmVrXG4gICAgLy8vIFJlbGF0ZWQgZmllbGQgb2YgVWx2XG4gICAgLy8gUGFyZW50RmllbGRJbmZvQ3RybHI6IG51bGwsXG4gICAgSXNQcmV2aWV3U291cmNlRmllbGQ6IGJvb2xlYW47XG4gICAgLy8vIEluZGljYXRlIHdoZXRoZXIgdGhpcyBVbHYgaXMgdXNlZCBhcyByZWxhdGlvbiBmaWVsZCB0aGF0IGlzIFByZXZpZXdTb3VyY2UgZm9yIGEgc3ViZm9ybVxuICAgIFNob3dPa0NhbmNlbEJ1dHRvbnM6IGJvb2xlYW47XG4gICAgX2lzRW5hYmxlOiBib29sZWFuO1xuICAgIF9pc1JlYWRPbmx5OiBib29sZWFuO1xuICAgIF9pc1Zpc2libGU6IGJvb2xlYW47XG4gICAgRm9vdHRlckJ1dHRvbnM6IGJvb2xlYW47XG4gICAgUmVmcmVzaFJvd3NCeU1vc05vU2VsZWN0aW9uQ2hhbmdlKFxuICAgICAgICBlZGlkZWRNb3M6IE1ldGFvYmplY3REYXRhTW9kZWxbXSxcbiAgICAgICAgYWRkZWRNb3M6IE1ldGFvYmplY3REYXRhTW9kZWxbXSxcbiAgICAgICAgZGVsZXRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdXG4gICAgKTogdm9pZDtcbiAgICBSZWZyZXNoUm93c0J5TW9zKFxuICAgICAgICBlZGlkZWRNb3M6IE1ldGFvYmplY3REYXRhTW9kZWxbXSxcbiAgICAgICAgYWRkZWRNb3M6IE1ldGFvYmplY3REYXRhTW9kZWxbXSxcbiAgICAgICAgZGVsZXRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdXG4gICAgKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlVWx2RGF0YUN0cmxyIHtcbiAgICBHZXRFZGl0Rm9ybVBhcmFtcyhtbywgaXNSZWFkT25seSwgaXNOZXcsIGluaGVyaXRhbmNlQ2hpbGRUeXBlRGVmLCBkb1JldHVybik6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db21wb25lbnRQYXJhbXMge1xuICAgIGZvcm1TZXR0aW5nPzogRm9ybVNldHRpbmc7XG4gICAgbW9JZDogc3RyaW5nO1xuICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHJlcG9ydElkPzogc3RyaW5nO1xuICAgIHZpZXdJZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBWaWV3TmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpbkRpYWxvZz86IGJvb2xlYW47XG4gICAgaXNTaW1wbGU/OiBib29sZWFuO1xuICAgIGxvYWRBY3Rpdml0eVZpZXc/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBCcnVsZUFjdGlvbk1lc3NhZ2Uge1xuICAgIE1lc3NhZ2VUeXBlOiBudW1iZXI7XG4gICAgRXNjYXBlQ2hhcmFjdGVyczogYm9vbGVhbjtcbiAgICBNZXNzYWdlRXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIE1lc3NhZ2VFeHByZXNzaW9uSHRtbDogU2FmZUh0bWw7XG59XG4iXX0=
|
|
@@ -408,7 +408,7 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
410
|
BaseViewItemPropsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseViewItemPropsComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i2.MoReportValuePipe }, { token: i3.FormPanelService, optional: true, skipSelf: true }, { token: i3.FormPanelService, optional: true, self: true }, { token: i3.UlvMainService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
411
|
-
BaseViewItemPropsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isChecked: "isChecked", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
411
|
+
BaseViewItemPropsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isChecked: "isChecked", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
412
412
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
|
|
413
413
|
type: Component,
|
|
414
414
|
args: [{
|
|
@@ -429,6 +429,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
429
429
|
}] }]; }, propDecorators: { _cartableFormRef: [{
|
|
430
430
|
type: ViewChild,
|
|
431
431
|
args: ['cartableFormRef', { static: false }]
|
|
432
|
+
}], checkboxComponent: [{
|
|
433
|
+
type: Input
|
|
432
434
|
}], mo: [{
|
|
433
435
|
type: Input
|
|
434
436
|
}], moDataListCount: [{
|
|
@@ -468,4 +470,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
468
470
|
}], cartableWorkflowData: [{
|
|
469
471
|
type: Input
|
|
470
472
|
}] } });
|
|
471
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUVKLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBSUgsUUFBUSxFQUlYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVMzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBZ0VsRSxZQUNjLEdBQWUsRUFDZixhQUEyQixFQUMzQixJQUF1QixFQUN2QixnQkFBbUMsRUFDWCx1QkFBeUMsRUFDN0MsaUJBQW1DLEVBQzNDLGVBQStCO1FBRXJELEtBQUssRUFBRSxDQUFDO1FBUkUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDWCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDM0Msb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBbEN6RCxh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RSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3RDLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRU8sbUJBQW1CO3NCQUEvQixLQUFLO2dCQUtPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQU1PLG9CQUFvQjtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCB0YXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxuICAgIEZvcm1TZXR0aW5nLFxuICAgIEJhcnNhQXBpLFxuICAgIENob2ljZURlZixcbiAgICBUeXBlVWx2TWFpbkN0cmxyLFxuICAgIEJydWxlQWN0aW9uTWVzc2FnZVxufSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcbmltcG9ydCB7IFByZXZlbnREZWZhdWxFdmVudCwgY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtUGFuZWxTZXJ2aWNlLCBVbHZNYWluU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEJhc2VWaWV3UHJvcHNDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utdmlldy1wcm9wcyc7XG5pbXBvcnQgeyBNb1JlcG9ydFZhbHVlUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbnR5cGUgUmVhc29uVG9TYXZlID0gJ1RBQicgfCAnQ1RSTCtFTlRFUicgfCAnQ0hFQ0tfQ0hBTkdFRCcgfCAnRVNDJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYm5yYy1iYXNlLXZpZXctaXRlbS1wcm9wcycsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCdjYXJ0YWJsZUZvcm1SZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgX2NhcnRhYmxlRm9ybVJlZjogRm9ybUNvbXBvbmVudDtcbiAgICBASW5wdXQoKSBtbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNDaGVja2VkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dWaWV3QnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTmV3SW5saW5lTW86IGJvb2xlYW47XG4gICAgQElucHV0KCkgZXh0cmFSZWxhdGlvbjogYW55O1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpbkRpYWxvZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc011bHRpU2VsZWN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJvd0luZGljYXRvcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3JDb2xvcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIFVsdk1haW5DdHJscjogVHlwZVVsdk1haW5DdHJscjtcbiAgICBASW5wdXQoKSBmaWVsZERpY3Q6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBASW5wdXQoKSBzZXQgc2VyaWFsaXplZFJlbGF0ZWRNbyh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vID0gdmFsO1xuICAgICAgICB0aGlzLl91cGRhdGVDYXJ0YWJsZU1vKHZhbCk7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVRlbXBsYXRlKHZhbDogRm9ybVNldHRpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVUZW1wbGF0ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlTW8odmFsOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSB7XG4gICAgICAgIHRoaXMuX2NhcnRhYmxlTW8gPSB2YWw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyk7XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlV29ya2Zsb3dEYXRhKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhID0gdmFsO1xuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBoYXNFcnJvciA9IGZhbHNlO1xuICAgIF9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbiA9IGZhbHNlO1xuICAgIF9sYXN0RWRpdGFibGVDb2x1bW5JbmRleDogbnVtYmVyO1xuICAgIGlubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgc2F2aW5nOiBib29sZWFuO1xuICAgIHNhdmVkOiBib29sZWFuO1xuICAgIGluUm93ID0gdHJ1ZTtcbiAgICBoYXNDYXJ0YWJsZVRlbXBsYXRlID0gZmFsc2U7XG4gICAgY2FydGFibGVQYXJhbXM6IHtcbiAgICAgICAgZm9ybVNldHRpbmc6IEZvcm1TZXR0aW5nO1xuICAgICAgICBtb0lkOiBzdHJpbmc7XG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB2aWV3SWQ6IGFueTtcbiAgICAgICAgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IGJvb2xlYW47XG4gICAgfTtcbiAgICB3b3JrZmxvd1N0YXRlOiB7IGVycm9yOiBhbnk7IHN0YXRlOiAnUGVuZGluZycgfCAnRmluaXNoJyB8ICcnIH07XG4gICAgYnJ1bGVBY3Rpb25NZXNzYWdlOiBCcnVsZUFjdGlvbk1lc3NhZ2UgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9zYXZlRWRpdGVkTW8kID0gbmV3IFN1YmplY3Q8UmVhc29uVG9TYXZlPigpO1xuICAgIHByaXZhdGUgX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX2Zvcm1QYW5lbExvYWRlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9jYXJ0YWJsZU1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlVGVtcGxhdGU6IEZvcm1TZXR0aW5nO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlV29ya2Zsb3dEYXRhOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfc2VyaWFsaXplZFJlbGF0ZWRNbzogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2VsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfcmVwb3J0VmFsdWVQaXBlOiBNb1JlcG9ydFZhbHVlUGlwZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJvdGVjdGVkIF9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByb3RlY3RlZCBfZm9ybVBhbmVsU2VydmljZTogRm9ybVBhbmVsU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChyZWFzb246IFJlYXNvblRvU2F2ZSkgPT4gdGhpcy5faW5saW5lRWRpdFNhdmVGb3JtUGFuZWwocmVhc29uKSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB0aHJvd0Vycm9yKCgpID0+IGVycikpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IHsgcmVhc29uOiBSZWFzb25Ub1NhdmU7IHN1Y2NlZWQ6IGJvb2xlYW47IHNhdmVkOiBib29sZWFuIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNhdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXMucmVhc29uID09PSAnVEFCJyB8fCByZXMucmVhc29uID09PSAnQ1RSTCtFTlRFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROZXh0SW5saW5lUmVjb3JkLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMucmVhc29uID09PSAnRVNDJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxDYW5jZWwuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX3N5bmNNbygpKSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGdldCBfaGFzRm9ybVBhbmVsU2VydmljZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UgIT09IG51bGwgJiYgdGhpcy5mb3JtU2V0dGluZztcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAodGhpcy5faGFzRm9ybVBhbmVsU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jb250ZXh0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLnZpZXckLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UubGF5b3V0JDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IGlzQ2hlY2tlZCwgaW5saW5lRWRpdE1vZGUgfSA9IGNoYW5nZXM7XG4gICAgICAgIGxldCBuZWVkVG9Mb2FkRm9ybSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbmxpbmVFZGl0TW9kZSkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSAmJiBpc0NoZWNrZWQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fbmVlZFRvU2F2ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0NIRUNLX0NIQU5HRUQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NoZWNrZWQgJiYgIWlzQ2hlY2tlZC5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fcmFpc2VXb3JrZmxvd1NoYXJlQnV0dG9ucyhpc0NoZWNrZWQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5saW5lRWRpdE1vZGU/LmN1cnJlbnRWYWx1ZSAmJiAhaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIG5lZWRUb0xvYWRGb3JtID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghaW5saW5lRWRpdE1vZGU/LmN1cnJlbnRWYWx1ZSAmJiBpbmxpbmVFZGl0TW9kZT8ucHJldmlvdXNWYWx1ZSAmJiB0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdFU0MnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVlZFRvTG9hZEZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLm1vICYmICFjaGFuZ2VzLm1vLmZpcnN0Q2hhbmdlICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNldFZhbHVlKGNoYW5nZXMubW8uY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAobW8gJiYgIW1vLmZpcnN0Q2hhbmdlICYmIHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UgJiYgdGhpcy5pc0NoZWNrZWQgJiYgdGhpcy5pbmxpbmVFZGl0TW9kZSkge1xuICAgICAgICAvLyAgICAgLy90aGlzLmZvcm1QYW5lbEN0cmxyLlNldFZhbHVlKGNoYW5nZXMubW8uY3VycmVudFZhbHVlKTtcbiAgICAgICAgLy8gfVxuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybVBhbmVsQ3RybHIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIudW4oJ2JydWxlU2hvd01lc3NhZ2VBY3Rpb24nLCB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBPbkNhcnRhYmxlRm9ybUNsaWNrKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcm93Q2hlY2soKTtcbiAgICB9XG5cbiAgICBvblJvd0NsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuICAgIG9uQ29sdW1uQ2hhbmdlVG9FZGl0TW9kZShjb2x1bW5FbDogSFRNTEVsZW1lbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlcyA9IGNvbHVtbkVsLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICBgYnV0dG9uLGJ1dHRvbjpub3QoW2Rpc2FibGVkXSksW2hyZWZdLGlucHV0Om5vdChbZGlzYWJsZWRdKSxpbnB1dCxcbiAgICAgICAgICAgICAgICBzZWxlY3Qsc2VsZWN0Om5vdChbZGlzYWJsZWRdKSx0ZXh0YXJlYSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pYFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9sYXN0RWRpdGFibGVDb2x1bW5JbmRleCA9IGluZGV4O1xuICAgICAgICBpZiAoIWZvY3VzYWJsZXMubGVuZ3RoIHx8IHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9jdXNUb0ZpcnN0RWlkdGFibGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlID0gZm9jdXNhYmxlc1swXTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAobGFzdEZvY3VzYWJsZSBhcyBIVE1MRWxlbWVudCk/LmZvY3VzKCk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbiAgICBvblRhYktleURvd24oZSwgaW5kZXgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl9sYXN0RWRpdGFibGVDb2x1bW5JbmRleCkge1xuICAgICAgICAgICAgUHJldmVudERlZmF1bEV2ZW50KGUpO1xuICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdUQUInKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxTYXZlKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDVFJMK0VOVEVSJyk7XG4gICAgfVxuICAgIG9uRWRpdEZvcm1QYW5lbENhbmNlbChlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnRVNDJyk7XG4gICAgfVxuICAgIG9uVWx2Q29tbWFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuICAgIG9uQWN0aW9uKGNvbW1hbmRCb2R5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdChjb21tYW5kQm9keSk7XG4gICAgfVxuICAgIG9uRXhwYW5kQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwYW5kQ2xpY2suZW1pdCh0aGlzLm1vKTtcbiAgICB9XG4gICAgb25EeW5hbWljQ29tcG9uZW50RXZlbnRzKGU6IHsgdGl0bGU6IHN0cmluZzsgZGF0YT86IGFueSB9KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZS50aXRsZSkge1xuICAgICAgICAgICAgY2FzZSAncm93Q2hlY2snOlxuICAgICAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncm93Q2xpY2snOlxuICAgICAgICAgICAgICAgIHRoaXMub25Sb3dDbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndWx2Q29tbWFuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vblVsdkNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2FydGFibGVGb3JtQ2xvc2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcnRhYmxlRm9ybUNsb3NlZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uQ2FydGFibGVCcnVsZUFjdGlvbihicnVsZUFjdGlvbjogQnJ1bGVBY3Rpb25NZXNzYWdlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24oYnJ1bGVBY3Rpb24pO1xuICAgIH1cbiAgICBvbkNhcnRhYmxlQWZ0ZXJUYW5zaXRpb24oZSk6IHZvaWQge1xuICAgICAgICB0aGlzLndvcmtmbG93U3RhdGUgPSB7XG4gICAgICAgICAgICBlcnJvcjogdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPyB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA6IGUuZXJyb3IsXG4gICAgICAgICAgICBzdGF0ZTogJ0ZpbmlzaCdcbiAgICAgICAgfTtcbiAgICB9XG4gICAgb25DYXJ0YWJsZUJlZm9yZVRhbnNpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJ1BlbmRpbmcnLCBlcnJvcjogbnVsbCB9O1xuICAgICAgICAvLyB0aGlzLndvcmtmbG93U3RhdGVDaGFuZ2VkLmVtaXQodGhpcy53b3JrZmxvd1N0YXRlKTtcbiAgICB9XG4gICAgb25SZXNldFdvcmtmbG93U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZVJlc2V0V29ya2Zsb3dTdGF0ZSgpO1xuICAgIH1cbiAgICBfdHJhY2tCeUNvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7Y29sdW1uLk5hbWV9JHtpbmRleH1gO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVJlc2V0V29ya2Zsb3dTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLndvcmtmbG93U3RhdGUgPSB7IHN0YXRlOiAnJywgZXJyb3I6IG51bGwgfTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF91cGRhdGVDYXJ0YWJsZU1vKHNlcmlhbGl6ZU1vOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNlcmlhbGl6ZU1vICYmIHRoaXMuX2NhcnRhYmxlTW8pIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZU1vID0gYCR7c2VyaWFsaXplTW99YDtcbiAgICAgICAgICAgIGNvbnN0IG1vID0gQmFyc2FBcGkuRXh0LmRlY29kZShzZXJpYWxpemVNbyk7XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0geyAuLi50aGlzLl9jYXJ0YWJsZU1vLCAuLi5tbyB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlQ2FydGFibGVQYXJhbXMoKTogdm9pZCB7XG4gICAgICAgIGxldCBjYXJ0YWJsZVRlbXBsYXRlID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgY2FydGFibGVNbyA9IHRoaXMuX2NhcnRhYmxlTW87XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlV29ya2Zsb3dEYXRhID0gdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGE7XG4gICAgICAgIGlmICh0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gdXBkYXRlIGNhcnRhYmxlIG1vO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgJiZcbiAgICAgICAgICAgIGNhcnRhYmxlTW8gJiZcbiAgICAgICAgICAgIHR5cGVvZiBjYXJ0YWJsZVdvcmtmbG93RGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjYXJ0YWJsZVRlbXBsYXRlKSk7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY2FydGFibGVUZW1wbGF0ZS5WaWV3O1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5EYXRhID0geyBNbzogeyAuLi5jYXJ0YWJsZU1vIH0gfTtcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUuV29ya2Zsb3cgPSBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9PT0gJycgPyBudWxsIDogSlNPTi5wYXJzZShjYXJ0YWJsZVdvcmtmbG93RGF0YSk7XG4gICAgICAgICAgICBpZiAoIXZpZXcuRXh0cmFKc29uUHJvcCkge1xuICAgICAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcCA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wLklzU2ltcGxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jYXJ0YWJsZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBmb3JtU2V0dGluZzogY2FydGFibGVUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBtb0lkOiBjYXJ0YWJsZU1vLklkLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZJZDogY2FydGFibGVNby4kVHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHZpZXdJZDogdmlldy5UeXBlVmlld0lkLFxuICAgICAgICAgICAgICAgIGluRGlhbG9nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2FkQWN0aXZpdHlWaWV3OiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5oYXNDYXJ0YWJsZVRlbXBsYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX25lZWRUb1NhdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBjb25zdCBpc0NoaWxkTm9kZSA9ICh0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jb250YWlucyhlLnRhcmdldCk7XG4gICAgICAgIC8vIGlmIChpc0NoaWxkTm9kZSkge1xuICAgICAgICAvLyAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyB9XG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLmlubGluZUVkaXRNb2RlICYmIHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2U7XG4gICAgICAgIGlmICghdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHIgJiYgdGhpcy5mb3JtUGFuZWxDdHJsci5Jc01vQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2hlY2tmb2N1c091dEZyb21Sb3codGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIC8vIGNvbnN0IGZvY3VzYWJsZTogTm9kZUxpc3QgPSB0aGlzLl9mb2N1c2FibGVDb250cm9scztcbiAgICAgICAgLy8gbGV0IGZvdW5kSW5Gb2N1c2FibGUgPSBmYWxzZTtcbiAgICAgICAgLy8gZm9jdXNhYmxlLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgLy8gICAgIGlmIChjID09PSB0YXJnZXQpIHtcbiAgICAgICAgLy8gICAgICAgICBmb3VuZEluRm9jdXNhYmxlID0gdHJ1ZTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfSk7XG4gICAgICAgIC8vIGlmICghZm91bmRJbkZvY3VzYWJsZSkge1xuICAgICAgICAvLyAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdUQUInKTtcbiAgICAgICAgLy8gfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3Jvd0NoZWNrKCk6IHZvaWQge1xuICAgICAgICAvLyBpZiAodGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jYXJ0YWJsZVBhcmFtcykge1xuICAgICAgICAgICAgY29uc3QgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW10gPSB0aGlzLmNhcnRhYmxlUGFyYW1zLmZvcm1TZXR0aW5nPy5Xb3JrZmxvdz8uQ2hvaWNlTGlzdDtcbiAgICAgICAgICAgIGlmIChjaG9pY2VMaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyOiB0aGlzLl9jYXJ0YWJsZUZvcm1SZWYuZm9ybVBhbmVsQ3RybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZDogaXNDaGVja2VkXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJC5uZXh0KCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc3luY01vKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBzeW5jV2l0aEZvcm1wYW5lbE1vID0gdGhpcy5tbztcbiAgICAgICAgY29uc3QgX2lzQ2hlY2tlZCA9IHRoaXMubW8uJElzQ2hlY2tlZDtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XG4gICAgICAgIHRoaXMuX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhmb3JtUGFuZWxDdHJsck1vLCBzeW5jV2l0aEZvcm1wYW5lbE1vKTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJE9yaWdpbmFsVmFsdWVzJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckT3JpZ2luYWxWYWx1ZXMnXTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJEZpZWxkRGljdCddID0gZm9ybVBhbmVsQ3RybHJNb1snJEZpZWxkRGljdCddO1xuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckU3RhdGUnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRTdGF0ZSddOyAvLyB0aGlzIGFkZCBiZWNhdXNlIGlmIHdlIGVkaXQgdW5jaGFuZ2VkIG1vIGl0IGRvZXMgbm90IHJlZmxlY3QgdG8gbW8gb2YgdWx2LlxuICAgICAgICB0aGlzLm1vID0geyAuLi5zeW5jV2l0aEZvcm1wYW5lbE1vIH07XG4gICAgICAgIHRoaXMubW8uJElzQ2hlY2tlZCA9IF9pc0NoZWNrZWQ7XG4gICAgICAgIHJldHVybiBmcm9tKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhzb3VyY2U6IE1ldGFvYmplY3REYXRhTW9kZWwsIGRlc3Q6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlLiRPcmlnaW5hbFZhbHVlcykuZm9yRWFjaCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgICBkZXN0W2NdID0gc291cmNlW2NdO1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRDYXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJENhcHRpb24nXSA9IHNvdXJjZVtjICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc291cmNlW2MgKyAnJEljb24nXSkge1xuICAgICAgICAgICAgICAgIGRlc3RbYyArICckSWNvbiddID0gc291cmNlW2MgKyAnJEljb24nXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZUZvcm1QYW5lbFZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1vKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24oYWN0aW9uOiBCcnVsZUFjdGlvbk1lc3NhZ2UpOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uSHRtbCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24pO1xuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IGFjdGlvbjtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jcmVhdGVGb3JtUGFuZWxDdHJscihtbzogTWV0YW9iamVjdERhdGFNb2RlbCwgdHlwZURlZklkOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIgPSBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsKFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVNldHRpbmcsXG4gICAgICAgICAgICAgICAgeyAuLi5tbyB9LFxuICAgICAgICAgICAgICAgIHR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5pblJvd1xuICAgICAgICAgICAgICAgIC8vIEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLklubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIub24oe1xuICAgICAgICAgICAgYnJ1bGVTaG93TWVzc2FnZUFjdGlvbjogdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsdWVDaGFuZ2U6IHRoaXMuX2hhbmRsZVZhbHVlQ2hhbmdlLmJpbmQodGhpcylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1TZXR0aW5nRGF0YSA9IHRoaXMuZm9ybVNldHRpbmcuRGF0YTtcbiAgICAgICAgY29uc3QgZm9ybU1vID0ge1xuICAgICAgICAgICAgLi4udGhpcy5tbyxcbiAgICAgICAgICAgICRGaWVsZERpY3Q6IGZvcm1TZXR0aW5nRGF0YS5Nby4kRmllbGREaWN0LFxuICAgICAgICAgICAgJFR5cGVEZWZJZDogZm9ybVNldHRpbmdEYXRhLk1vLiRUeXBlRGVmSWQsXG4gICAgICAgICAgICAkT3JpZ2luYWxWYWx1ZXM6IHt9XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoZm9ybU1vKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NyZWF0ZUZvcm1QYW5lbEN0cmxyKGZvcm1NbywgdGhpcy50eXBlRGVmSWQpO1xuICAgICAgICB0aGlzLl9mb3JtUGFuZWxMb2FkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsciA9IHRoaXMuZm9ybVBhbmVsQ3RybHI7XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuVWx2TW9EYXRhTGlzdENvdW50ID0gdGhpcy5tb0RhdGFMaXN0Q291bnQgLSAxO1xuICAgICAgICBmb3JtUGFuZWxDdHJsci5Mb2FkQW5kQ3JlYXRlKG51bGwsIGZhbHNlLCBmYWxzZSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRm9ybVBhbmVsVWkgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRNbyA9IHRoaXMuX3BhcmVudEZvcm1QYW5lbFNlcnZpY2UgPyB0aGlzLl9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlLm1vIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmV4dHJhUmVsYXRpb24gJiYgcGFyZW50TW8gJiYgdGhpcy5leHRyYVJlbGF0aW9uLlJlbGF0aW9uVHlwZSA9PT0gJ0NvbXBvc2l0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyLk1vLlNldEZWYWx1ZSh0aGlzLmV4dHJhUmVsYXRpb24uUGFyZW50RmROYW1lLCBwYXJlbnRNbyk7XG4gICAgICAgICAgICAgICAgLy8gbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW9bcmVsYXRpb24uUGFyZW50RmROYW1lXSA9IHBhcmVudE1vLkdldENoYW5nZWRPYmplY3QoKTtcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdLiRTdGF0ZSA9IHBhcmVudE1vLiRTdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1c3RvbUZvcm1QYW5lbFVpLlJlZnJlc2ggPSAoKSA9PiB7fTtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVzZXRTYXZpbmdTdGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNhdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRTYXZpbmdTdGF0ZShlcnIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNhdmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pOiBQcm9taXNlPHsgcmVhc29uOiBSZWFzb25Ub1NhdmU7IHN1Y2NlZWQ6IGJvb2xlYW47IHNhdmVkOiBib29sZWFuIH0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4oKHJlc29sdmUsIF8pID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtUGFuZWxDdHJsci5Jc01vQ2hhbmdlZCgpKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgc3RhdGUgb2YgbW8gaXMgbmV3IG9yIG1vZGlkZmllZCB0aGVuIGl0IG5lZWRzIHRvIHVwZGF0ZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyTW8gPSB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vO1xuICAgICAgICAgICAgZGVsZXRlIGZvcm1QYW5lbEN0cmxyTW8uanNvbjtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2aW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxTYXZlLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNhdmUoZmFsc2UsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0SXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRTYXZpbmdTdGF0ZShlcnIpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUVKLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBSUgsUUFBUSxFQUtYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVMzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBaUVsRSxZQUNjLEdBQWUsRUFDZixhQUEyQixFQUMzQixJQUF1QixFQUN2QixnQkFBbUMsRUFDWCx1QkFBeUMsRUFDN0MsaUJBQW1DLEVBQzNDLGVBQStCO1FBRXJELEtBQUssRUFBRSxDQUFDO1FBUkUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDWCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDM0Msb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBbEN6RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQUVwQyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFLMUIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQVU1Qix1QkFBa0IsR0FBOEIsSUFBSSxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDN0MsNEJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWdCbEQsSUFBSSxDQUFDLGNBQWM7YUFDZCxZQUFZLEVBQUU7YUFDZCxJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsU0FBUyxDQUFDLENBQUMsTUFBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzFFLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzdDO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBK0QsRUFBRSxFQUFFO1lBQzNFLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDNUI7WUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssWUFBWSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM3QztpQkFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMxQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLHVCQUF1QjthQUN2QixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUMvQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEtBQUssV0FBVyxFQUFFO2dCQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzthQUNuQztRQUNMLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQXhGRCxJQUFhLG1CQUFtQixDQUFDLEdBQVc7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQWEsZ0JBQWdCLENBQUMsR0FBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsR0FBd0I7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFhLG9CQUFvQixDQUFDLEdBQVc7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBdUVELElBQVksb0JBQW9CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQy9ELENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzlDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRTtvQkFDcEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO3FCQUM3QztpQkFDSjtxQkFBTSxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUU7b0JBQy9CLGNBQWMsR0FBRyxJQUFJLENBQUM7aUJBQ3pCO2FBQ0o7U0FDSjtRQUNELElBQUksU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUNyQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxjQUFjLEVBQUUsWUFBWSxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xGLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDekI7YUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksSUFBSSxjQUFjLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDekYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUN2QztRQUNELElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDOUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDekQ7U0FDSjtRQUNELHFHQUFxRztRQUNyRywrREFBK0Q7UUFDL0QsSUFBSTtJQUNSLENBQUM7SUFDRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUN4RjtJQUNMLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsUUFBcUIsRUFBRSxLQUFhO1FBQ3pELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDeEM7Z0hBQ29HLENBQ3ZHLENBQUM7UUFDRixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUN4RCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1gsYUFBNkIsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBQ0QsWUFBWSxDQUFDLENBQUMsRUFBRSxLQUFLO1FBQ2pCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUN6QyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELFFBQVEsQ0FBQyxXQUFtQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsYUFBYTtRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsQ0FBZ0M7UUFDckQsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ2IsS0FBSyxVQUFVO2dCQUNYLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU07WUFDVixLQUFLLFlBQVk7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixNQUFNO1NBQ2I7SUFDTCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELHFCQUFxQixDQUFDLFdBQStCO1FBQ2pELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDbEUsS0FBSyxFQUFFLFFBQVE7U0FDbEIsQ0FBQztJQUNOLENBQUM7SUFDRCx5QkFBeUI7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZELHNEQUFzRDtJQUMxRCxDQUFDO0lBQ0Qsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxjQUFjLENBQUMsS0FBYSxFQUFFLE1BQXdCO1FBQ2xELE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDUyx5QkFBeUI7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUNTLGlCQUFpQixDQUFDLFdBQW1CO1FBQzNDLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDakMsV0FBVyxHQUFHLEdBQUcsV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ3JEO0lBQ0wsQ0FBQztJQUNTLHFCQUFxQjtRQUMzQixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLDJCQUEyQjtZQUMzQixPQUFPO1NBQ1Y7UUFDRCxJQUNJLGdCQUFnQjtZQUNoQixVQUFVO1lBQ1YsT0FBTyxvQkFBb0IsS0FBSyxXQUFXO1lBQzNDLElBQUksQ0FBQyxvQkFBb0IsRUFDM0I7WUFDRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUNuQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDbEQsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLG9CQUFvQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBRW5DLElBQUksQ0FBQyxjQUFjLEdBQUc7Z0JBQ2xCLFdBQVcsRUFBRSxnQkFBZ0I7Z0JBQzdCLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDbkIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxVQUFVO2dCQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ3ZCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGdCQUFnQixFQUFFLElBQUk7YUFDekIsQ0FBQztZQUNGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFDUyxXQUFXO1FBQ2pCLHlCQUF5QjtRQUN6QixvQkFBb0I7UUFDcEIsSUFBSTtRQUNKLGtGQUFrRjtRQUNsRixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLElBQUk7UUFDSixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUMzRCxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ0osT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRVMscUJBQXFCLENBQUMsTUFBTTtRQUNsQyx1REFBdUQ7UUFDdkQsZ0NBQWdDO1FBQ2hDLDZCQUE2QjtRQUM3QiwwQkFBMEI7UUFDMUIsbUNBQW1DO1FBQ25DLFFBQVE7UUFDUixNQUFNO1FBQ04sMkJBQTJCO1FBQzNCLHVDQUF1QztRQUN2QyxJQUFJO0lBQ1IsQ0FBQztJQUNTLFNBQVM7UUFDZix3QkFBd0I7UUFDeEIsY0FBYztRQUNkLElBQUk7UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRVMsMEJBQTBCLENBQUMsU0FBa0I7UUFDbkQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE1BQU0sVUFBVSxHQUFnQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO1lBQ3RGLElBQUksVUFBVSxFQUFFLE1BQU0sRUFBRTtnQkFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO3dCQUMzQixjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWE7d0JBQ25ELEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTt3QkFDWCxVQUFVO3dCQUNWLEdBQUcsRUFBRSxTQUFTO3FCQUNqQixDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNKO0lBQ0wsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUNTLE9BQU87UUFDYixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUN0RSxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0UsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyw2RUFBNkU7UUFDekksSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVTLHlCQUF5QixDQUFDLE1BQTJCLEVBQUUsSUFBeUI7UUFDdEYsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQzthQUNqRDtZQUNELElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFUyw2QkFBNkIsQ0FBQyxNQUEwQjtRQUM5RCxNQUFNLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFDUyxxQkFBcUIsQ0FBQyxFQUF1QixFQUFFLFNBQWlCO1FBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQXlCLENBQzNDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFDVCxTQUFTLEVBQ1QsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLEtBQUs7WUFDViwyRUFBMkU7YUFDOUUsQ0FBQztTQUNMO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkIsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckUsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xELENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRVMsNEJBQTRCO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzlDLE1BQU0sTUFBTSxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNWLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLFVBQVU7WUFDekMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsVUFBVTtZQUN6QyxlQUFlLEVBQUUsRUFBRTtTQUN0QixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDbEUsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN2RixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBRTtnQkFDckYsY0FBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZFLGdGQUFnRjtnQkFDaEYsMkVBQTJFO2FBQzlFO1lBQ0QsaUJBQWlCLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNTLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUNTLGVBQWUsQ0FBQyxHQUFHO1FBQ3pCLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUNTLHdCQUF3QixDQUFDLE1BQU07UUFDckMsNkRBQTZEO1FBQzdELE9BQU8sSUFBSSxPQUFPLENBQTZELENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNwQyw2REFBNkQ7Z0JBQzdELE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUM3QixzQkFBc0I7WUFFdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDcEMsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3VIQXJkUSwwQkFBMEI7MkdBQTFCLDBCQUEwQixzMEJBSHpCLEVBQUU7MkZBR0gsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDs7MEJBdUVRLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs0Q0F2RW9DLGdCQUFnQjtzQkFBaEUsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3RDLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVPLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFLTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFNTyxvQkFBb0I7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgdGFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBGb3JtU2V0dGluZyxcbiAgICBCYXJzYUFwaSxcbiAgICBDaG9pY2VEZWYsXG4gICAgVHlwZVVsdk1haW5DdHJscixcbiAgICBCcnVsZUFjdGlvbk1lc3NhZ2UsXG4gICAgRWpyYXlPbGdvXG59IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMnO1xuaW1wb3J0IHsgUHJldmVudERlZmF1bEV2ZW50LCBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1QYW5lbFNlcnZpY2UsIFVsdk1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCB9IGZyb20gJy4vYmFzZS12aWV3LXByb3BzJztcbmltcG9ydCB7IE1vUmVwb3J0VmFsdWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xudHlwZSBSZWFzb25Ub1NhdmUgPSAnVEFCJyB8ICdDVFJMK0VOVEVSJyB8ICdDSEVDS19DSEFOR0VEJyB8ICdFU0MnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdibnJjLWJhc2Utdmlldy1pdGVtLXByb3BzJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld1Byb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ2NhcnRhYmxlRm9ybVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBfY2FydGFibGVGb3JtUmVmOiBGb3JtQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGNoZWNrYm94Q29tcG9uZW50OiBFanJheU9sZ287XG4gICAgQElucHV0KCkgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgQElucHV0KCkgbW9EYXRhTGlzdENvdW50OiBudW1iZXI7XG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBsYXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93Vmlld0J1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc05ld0lubGluZU1vOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGV4dHJhUmVsYXRpb246IGFueTtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yQ29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBVbHZNYWluQ3RybHI6IFR5cGVVbHZNYWluQ3RybHI7XG4gICAgQElucHV0KCkgZmllbGREaWN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgQElucHV0KCkgc2V0IHNlcmlhbGl6ZWRSZWxhdGVkTW8odmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyA9IHZhbDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FydGFibGVNbyh2YWwpO1xuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVUZW1wbGF0ZSh2YWw6IEZvcm1TZXR0aW5nKSB7XG4gICAgICAgIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGUgPSB2YWw7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZU1vKHZhbDogTWV0YW9iamVjdERhdGFNb2RlbCkge1xuICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0gdmFsO1xuICAgICAgICB0aGlzLl91cGRhdGVDYXJ0YWJsZU1vKHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW8pO1xuXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVdvcmtmbG93RGF0YSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9jYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHZhbDtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICBfZm9jdXNUb0ZpcnN0RWlkdGFibGVDb2x1bW4gPSBmYWxzZTtcbiAgICBfbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXg6IG51bWJlcjtcbiAgICBpbmxpbmVFZGl0SW5SZXBvcnQgPSB0cnVlO1xuICAgIGxheW91dCQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xuICAgIHNhdmluZzogYm9vbGVhbjtcbiAgICBzYXZlZDogYm9vbGVhbjtcbiAgICBpblJvdyA9IHRydWU7XG4gICAgaGFzQ2FydGFibGVUZW1wbGF0ZSA9IGZhbHNlO1xuICAgIGNhcnRhYmxlUGFyYW1zOiB7XG4gICAgICAgIGZvcm1TZXR0aW5nOiBGb3JtU2V0dGluZztcbiAgICAgICAgbW9JZDogc3RyaW5nO1xuICAgICAgICB0eXBlRGVmSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdmlld0lkOiBhbnk7XG4gICAgICAgIGluRGlhbG9nOiBib29sZWFuO1xuICAgICAgICBsb2FkQWN0aXZpdHlWaWV3OiBib29sZWFuO1xuICAgIH07XG4gICAgd29ya2Zsb3dTdGF0ZTogeyBlcnJvcjogYW55OyBzdGF0ZTogJ1BlbmRpbmcnIHwgJ0ZpbmlzaCcgfCAnJyB9O1xuICAgIGJydWxlQWN0aW9uTWVzc2FnZTogQnJ1bGVBY3Rpb25NZXNzYWdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfc2F2ZUVkaXRlZE1vJCA9IG5ldyBTdWJqZWN0PFJlYXNvblRvU2F2ZT4oKTtcbiAgICBwcml2YXRlIF9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9mb3JtUGFuZWxMb2FkZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfY2FydGFibGVNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVRlbXBsYXRlOiBGb3JtU2V0dGluZztcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVdvcmtmbG93RGF0YTogc3RyaW5nO1xuICAgIHByaXZhdGUgX3NlcmlhbGl6ZWRSZWxhdGVkTW86IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9lbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgX3JlcG9ydFZhbHVlUGlwZTogTW9SZXBvcnRWYWx1ZVBpcGUsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByb3RlY3RlZCBfcGFyZW50Rm9ybVBhbmVsU2VydmljZTogRm9ybVBhbmVsU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVhc29uOiBSZWFzb25Ub1NhdmUpID0+IHRoaXMuX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbikpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnIpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiB7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zYXZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlYXNvbiA9PT0gJ1RBQicgfHwgcmVzLnJlYXNvbiA9PT0gJ0NUUkwrRU5URVInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnJlYXNvbiA9PT0gJ0VTQycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsQ2FuY2VsLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9zeW5jTW8oKSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXQgX2hhc0Zvcm1QYW5lbFNlcnZpY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlICE9PSBudWxsICYmIHRoaXMuZm9ybVNldHRpbmc7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS52aWV3JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmxheW91dCQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyBpc0NoZWNrZWQsIGlubGluZUVkaXRNb2RlIH0gPSBjaGFuZ2VzO1xuICAgICAgICBsZXQgbmVlZFRvTG9hZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ2hlY2tlZC5jdXJyZW50VmFsdWUgJiYgaXNDaGVja2VkLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRUb1NhdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDSEVDS19DSEFOR0VEJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDaGVja2VkICYmICFpc0NoZWNrZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgIWlubGluZUVkaXRNb2RlPy5wcmV2aW91c1ZhbHVlICYmIHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnRVNDJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvd0NoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoY29sdW1uRWw6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBjb2x1bW5FbC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgYGJ1dHRvbixidXR0b246bm90KFtkaXNhYmxlZF0pLFtocmVmXSxpbnB1dDpub3QoW2Rpc2FibGVkXSksaW5wdXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZXNbMF07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0VTQycpO1xuICAgIH1cbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xuICAgIH1cbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NoZWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VsdkNvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlRm9ybUNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlQnJ1bGVBY3Rpb24oYnJ1bGVBY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGJydWxlQWN0aW9uKTtcbiAgICB9XG4gICAgb25DYXJ0YWJsZUFmdGVyVGFuc2l0aW9uKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0ge1xuICAgICAgICAgICAgZXJyb3I6IHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID8gdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgOiBlLmVycm9yLFxuICAgICAgICAgICAgc3RhdGU6ICdGaW5pc2gnXG4gICAgICAgIH07XG4gICAgfVxuICAgIG9uQ2FydGFibGVCZWZvcmVUYW5zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMud29ya2Zsb3dTdGF0ZSA9IHsgc3RhdGU6ICdQZW5kaW5nJywgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgLy8gdGhpcy53b3JrZmxvd1N0YXRlQ2hhbmdlZC5lbWl0KHRoaXMud29ya2Zsb3dTdGF0ZSk7XG4gICAgfVxuICAgIG9uUmVzZXRXb3JrZmxvd1N0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJycsIGVycm9yOiBudWxsIH07XG4gICAgfVxuICAgIHByb3RlY3RlZCBfdXBkYXRlQ2FydGFibGVNbyhzZXJpYWxpemVNbzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChzZXJpYWxpemVNbyAmJiB0aGlzLl9jYXJ0YWJsZU1vKSB7XG4gICAgICAgICAgICBzZXJpYWxpemVNbyA9IGAke3NlcmlhbGl6ZU1vfWA7XG4gICAgICAgICAgICBjb25zdCBtbyA9IEJhcnNhQXBpLkV4dC5kZWNvZGUoc2VyaWFsaXplTW8pO1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHsgLi4udGhpcy5fY2FydGFibGVNbywgLi4ubW8gfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk6IHZvaWQge1xuICAgICAgICBsZXQgY2FydGFibGVUZW1wbGF0ZSA9IHRoaXMuX2NhcnRhYmxlVGVtcGxhdGU7XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlTW8gPSB0aGlzLl9jYXJ0YWJsZU1vO1xuICAgICAgICBjb25zdCBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhO1xuICAgICAgICBpZiAodGhpcy5oYXNDYXJ0YWJsZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAvLyBUT0RPIHVwZGF0ZSBjYXJ0YWJsZSBtbztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlICYmXG4gICAgICAgICAgICBjYXJ0YWJsZU1vICYmXG4gICAgICAgICAgICB0eXBlb2YgY2FydGFibGVXb3JrZmxvd0RhdGEgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vXG4gICAgICAgICkge1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FydGFibGVUZW1wbGF0ZSkpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IGNhcnRhYmxlVGVtcGxhdGUuVmlldztcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUuRGF0YSA9IHsgTW86IHsgLi4uY2FydGFibGVNbyB9IH07XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLldvcmtmbG93ID0gY2FydGFibGVXb3JrZmxvd0RhdGEgPT09ICcnID8gbnVsbCA6IEpTT04ucGFyc2UoY2FydGFibGVXb3JrZmxvd0RhdGEpO1xuICAgICAgICAgICAgaWYgKCF2aWV3LkV4dHJhSnNvblByb3ApIHtcbiAgICAgICAgICAgICAgICB2aWV3LkV4dHJhSnNvblByb3AgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcC5Jc1NpbXBsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY2FydGFibGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgZm9ybVNldHRpbmc6IGNhcnRhYmxlVGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgbW9JZDogY2FydGFibGVNby5JZCxcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQ6IGNhcnRhYmxlTW8uJFR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICB2aWV3SWQ6IHZpZXcuVHlwZVZpZXdJZCxcbiAgICAgICAgICAgICAgICBpbkRpYWxvZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZEFjdGl2aXR5VmlldzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAvLyBpZiAoaXNDaGlsZE5vZGUpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCB0ID0gdGhpcy5pbmxpbmVFZGl0TW9kZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlO1xuICAgICAgICBpZiAoIXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zdCBmb2N1c2FibGU6IE5vZGVMaXN0ID0gdGhpcy5fZm9jdXNhYmxlQ29udHJvbHM7XG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoYyA9PT0gdGFyZ2V0KSB7XG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VXb3JrZmxvd1NoYXJlQnV0dG9ucyhpc0NoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2FydGFibGVQYXJhbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNob2ljZUxpc3Q6IENob2ljZURlZltdID0gdGhpcy5jYXJ0YWJsZVBhcmFtcy5mb3JtU2V0dGluZz8uV29ya2Zsb3c/LkNob2ljZUxpc3Q7XG4gICAgICAgICAgICBpZiAoY2hvaWNlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTaGFyZUJ1dHRvbnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUGFuZWxDdHJscjogdGhpcy5fY2FydGFibGVGb3JtUmVmLmZvcm1QYW5lbEN0cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtbzogdGhpcy5tbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZUxpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGQ6IGlzQ2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGFuZGxlVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3N5bmNNbygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3luY1dpdGhGb3JtcGFuZWxNbyA9IHRoaXMubW87XG4gICAgICAgIGNvbnN0IF9pc0NoZWNrZWQgPSB0aGlzLm1vLiRJc0NoZWNrZWQ7XG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyTW8gPSB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vO1xuICAgICAgICB0aGlzLl91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoZm9ybVBhbmVsQ3RybHJNbywgc3luY1dpdGhGb3JtcGFuZWxNbyk7XG4gICAgICAgIHN5bmNXaXRoRm9ybXBhbmVsTW9bJyRPcmlnaW5hbFZhbHVlcyddID0gZm9ybVBhbmVsQ3RybHJNb1snJE9yaWdpbmFsVmFsdWVzJ107XG4gICAgICAgIHN5bmNXaXRoRm9ybXBhbmVsTW9bJyRGaWVsZERpY3QnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRGaWVsZERpY3QnXTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJFN0YXRlJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckU3RhdGUnXTsgLy8gdGhpcyBhZGQgYmVjYXVzZSBpZiB3ZSBlZGl0IHVuY2hhbmdlZCBtbyBpdCBkb2VzIG5vdCByZWZsZWN0IHRvIG1vIG9mIHVsdi5cbiAgICAgICAgdGhpcy5tbyA9IHsgLi4uc3luY1dpdGhGb3JtcGFuZWxNbyB9O1xuICAgICAgICB0aGlzLm1vLiRJc0NoZWNrZWQgPSBfaXNDaGVja2VkO1xuICAgICAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoc291cmNlOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBkZXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZS4kT3JpZ2luYWxWYWx1ZXMpLmZvckVhY2goKGM6IGFueSkgPT4ge1xuICAgICAgICAgICAgZGVzdFtjXSA9IHNvdXJjZVtjXTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VbYyArICckQ2FwdGlvbiddKSB7XG4gICAgICAgICAgICAgICAgZGVzdFtjICsgJyRDYXB0aW9uJ10gPSBzb3VyY2VbYyArICckQ2FwdGlvbiddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRJY29uJ10pIHtcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJEljb24nXSA9IHNvdXJjZVtjICsgJyRJY29uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VGb3JtUGFuZWxWYWx1ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGFjdGlvbjogQnJ1bGVBY3Rpb25NZXNzYWdlKTogdm9pZCB7XG4gICAgICAgIGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbkh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBhY3Rpb247XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlRm9ybVBhbmVsQ3RybHIobW86IE1ldGFvYmplY3REYXRhTW9kZWwsIHR5cGVEZWZJZDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyID0gY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbChcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXR0aW5nLFxuICAgICAgICAgICAgICAgIHsgLi4ubW8gfSxcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuaW5Sb3dcbiAgICAgICAgICAgICAgICAvLyBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5JbmxpbmVFZGl0SW5SZXBvcnQgPSB0cnVlO1xuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLm9uKHtcbiAgICAgICAgICAgIGJydWxlU2hvd01lc3NhZ2VBY3Rpb246IHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbHVlQ2hhbmdlOiB0aGlzLl9oYW5kbGVWYWx1ZUNoYW5nZS5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbG9hZEFuZENyZWF0ZUZvcm1QYW5lbEN0cmxyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtU2V0dGluZ0RhdGEgPSB0aGlzLmZvcm1TZXR0aW5nLkRhdGE7XG4gICAgICAgIGNvbnN0IGZvcm1NbyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubW8sXG4gICAgICAgICAgICAkRmllbGREaWN0OiBmb3JtU2V0dGluZ0RhdGEuTW8uJEZpZWxkRGljdCxcbiAgICAgICAgICAgICRUeXBlRGVmSWQ6IGZvcm1TZXR0aW5nRGF0YS5Nby4kVHlwZURlZklkLFxuICAgICAgICAgICAgJE9yaWdpbmFsVmFsdWVzOiB7fVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNldFZhbHVlKGZvcm1Nbyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jcmVhdGVGb3JtUGFuZWxDdHJscihmb3JtTW8sIHRoaXMudHlwZURlZklkKTtcbiAgICAgICAgdGhpcy5fZm9ybVBhbmVsTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSB0aGlzLmZvcm1QYW5lbEN0cmxyO1xuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlVsdk1vRGF0YUxpc3RDb3VudCA9IHRoaXMubW9EYXRhTGlzdENvdW50IC0gMTtcbiAgICAgICAgZm9ybVBhbmVsQ3RybHIuTG9hZEFuZENyZWF0ZShudWxsLCBmYWxzZSwgZmFsc2UsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUZvcm1QYW5lbFVpID0gZm9ybVBhbmVsQ3RybHIuQWRhcHRlci5Db250cm9sO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TW8gPSB0aGlzLl9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlID8gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZS5tbyA6IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5leHRyYVJlbGF0aW9uICYmIHBhcmVudE1vICYmIHRoaXMuZXh0cmFSZWxhdGlvbi5SZWxhdGlvblR5cGUgPT09ICdDb21wb3NpdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3JtUGFuZWxDdHJsci5Nby5TZXRGVmFsdWUodGhpcy5leHRyYVJlbGF0aW9uLlBhcmVudEZkTmFtZSwgcGFyZW50TW8pO1xuICAgICAgICAgICAgICAgIC8vIG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSBwYXJlbnRNby5HZXRDaGFuZ2VkT2JqZWN0KCk7XG4gICAgICAgICAgICAgICAgLy8gbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW9bcmVsYXRpb24uUGFyZW50RmROYW1lXS4kU3RhdGUgPSBwYXJlbnRNby4kU3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXN0b21Gb3JtUGFuZWxVaS5SZWZyZXNoID0gKCkgPT4ge307XG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmNvbnRleHQgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3Jlc2V0U2F2aW5nU3RhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0U2F2aW5nU3RhdGUoZXJyKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5saW5lRWRpdFNhdmVGb3JtUGFuZWwocmVhc29uKTogUHJvbWlzZTx7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHsgcmVhc29uOiBSZWFzb25Ub1NhdmU7IHN1Y2NlZWQ6IGJvb2xlYW47IHNhdmVkOiBib29sZWFuIH0+KChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHN0YXRlIG9mIG1vIGlzIG5ldyBvciBtb2RpZGZpZWQgdGhlbiBpdCBuZWVkcyB0byB1cGRhdGVcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsck1vID0gdGhpcy5mb3JtUGFuZWxDdHJsci5NbztcbiAgICAgICAgICAgIGRlbGV0ZSBmb3JtUGFuZWxDdHJsck1vLmpzb247XG4gICAgICAgICAgICAvLyB0aGlzLnNhdmluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsU2F2ZS5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TYXZlKGZhbHNlLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNldElzQ2hhbmdlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0U2F2aW5nU3RhdGUoZXJyKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|