@c8y/ngx-components 1018.503.1 → 1018.503.22
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/core/common/ApplicationOptions.d.ts +4 -2
- package/core/common/files.service.d.ts +10 -2
- package/core/common/global-config.service.d.ts +1 -1
- package/core/common/permissions.service.d.ts +67 -0
- package/core/common/tenant-ui.service.d.ts +1 -1
- package/core/i18n/pattern-messages.data.d.ts +20 -20
- package/esm2020/assets-navigator/asset-node.service.mjs +5 -4
- package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
- package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
- package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
- package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
- package/esm2020/context-dashboard/add-dashboard.factory.mjs +6 -3
- package/esm2020/context-dashboard/context-dashboard.component.mjs +2 -2
- package/esm2020/context-dashboard/context-dashboard.service.mjs +3 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +2 -2
- package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +3 -3
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/common/files.service.mjs +20 -4
- package/esm2020/core/common/global-config.service.mjs +7 -2
- package/esm2020/core/common/permissions.service.mjs +68 -1
- package/esm2020/core/common/tenant-ui.service.mjs +3 -2
- package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
- package/esm2020/core/docs/support-outlet/support-outlet.component.mjs +3 -2
- package/esm2020/core/drop-area/drop-area.component.mjs +3 -1
- package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
- package/esm2020/core/setup/setup.service.mjs +2 -2
- package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
- package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +3 -3
- package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
- package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
- package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
- package/esm2020/files-repository/files-repository.guard.mjs +5 -3
- package/esm2020/location/location.component.mjs +20 -13
- package/esm2020/map/cluster-map.component.mjs +19 -11
- package/esm2020/map/cluster-map.mjs +8 -3
- package/esm2020/map/map-status.component.mjs +19 -5
- package/esm2020/map/map.component.mjs +10 -10
- package/esm2020/map/map.model.mjs +1 -19
- package/esm2020/map/map.service.mjs +24 -1
- package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
- package/esm2020/protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.mjs +2 -2
- package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
- package/esm2020/replace-device/replace-device.service.mjs +5 -5
- package/esm2020/reports/export-schedules.component.mjs +3 -3
- package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +4 -4
- package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
- package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
- package/esm2020/sub-assets/add-group/add-group.component.mjs +2 -2
- package/esm2020/sub-assets/asset-properties-item.component.mjs +6 -6
- package/esm2020/sub-assets/groups.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.service.mjs +16 -10
- package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
- package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
- package/esm2020/upgrade/ng1/index.mjs +4 -3
- package/esm2020/widgets/cockpit/index.mjs +1 -1
- package/esm2020/widgets/device-management/index.mjs +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +12 -9
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +8 -8
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-location.mjs +20 -13
- package/fesm2015/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-map.mjs +174 -142
- package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-replace-device.mjs +5 -5
- package/fesm2015/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +24 -18
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +121 -28
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +12 -9
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +8 -8
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-location.mjs +20 -13
- package/fesm2020/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-map.mjs +174 -142
- package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-replace-device.mjs +5 -5
- package/fesm2020/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +24 -18
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +121 -28
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +3 -0
- package/location/location.component.d.ts +2 -2
- package/map/cluster-map.component.d.ts +3 -1
- package/map/map-status.component.d.ts +12 -1
- package/map/map.component.d.ts +1 -1
- package/map/map.model.d.ts +0 -1
- package/map/map.service.d.ts +6 -0
- package/package.json +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/widgets/cockpit/index.d.ts +2 -1
- package/widgets/device-management/index.d.ts +2 -1
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export class ApplicationOptions {
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBME05QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYlNESyB2ZXJzaW9uICovXG4gIHdlYlNka1ZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBoeWJyaWQgYW5kIHVzZXMgQW5ndWxhciBhbmQgQW5ndWxhckpTIHNpbXVsdGFuZW91c2x5LiAqL1xuICB1cGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIGJyYW5kaW5nIGVudHJ5IGZpbGUuIChTZXQgaXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBhbnkgc3R5bGluZy4gWW91IGNhbiBoYW5kbGUgdGhlIHN0eWxpbmcgdGhlbiBvbiB5b3VyIG93biBlLmcuIGluIGFuIGFuZ3VsYXIuanNvbiBmaWxlIHVzaW5nIG5nLWNsaSkgKi9cbiAgYnJhbmRpbmdFbnRyeT86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byBmYXZpY29uLiAqL1xuICBmYXZpY29uVXJsPzogc3RyaW5nO1xuICAvKiogVVJMIHRvICouY3NzIGZpbGUgd2hpY2ggd2lsbCByZXBsYWNlIGRlZmF1bHQgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nVXJsPzogc3RyaW5nO1xuICAvKiogT2JqZWN0IHdpdGggcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIENTUyBjdXN0b20gdmFyaWFibGVzLiAqL1xuICBicmFuZGluZ0Nzc1ZhcnM/OiBCcmFuZGluZ0Nzc1ZhcnM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBvciBvdmVycmlkaW5nIGxhbmd1YWdlcyBhdmFpbGFibGUgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBJdHMga2V5cyBhcmUgbGFuZ3VhZ2UgY29kZXMgYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIC0gYG5hbWVgOiBFbmdsaXNoIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGBuYXRpdmVOYW1lYDogbmF0aXZlIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGB1cmxgOiBmdWxsIFVSTCB0byBKU09OIGZpbGUgd2l0aCBjb21waWxlZCB0cmFuc2xhdGlvbnM7XG4gICAqICAgIGlmIG5vdCBkZWZpbmVkLCB0cmFuc2xhdGlvbnMgd2lsbCBiZSBsb2FkZWQgZnJvbSBgJHtsb2NhbGVQYXRofS8ke2xhbmdDb2RlfS5qc29uYC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBganNvblxuICAgKiBcImxhbmd1YWdlc1wiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIm5hbWVcIjogXCJHZXJtYW5cIixcbiAgICogICAgIFwibmF0aXZlTmFtZVwiOiBcIkRldXRzY2hcIixcbiAgICogICAgIFwidXJsXCI6IFwiL2FwcHMvcHVibGljL3VpLWFzc2V0cy9kZS5qc29uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsYW5ndWFnZXM/OiBMYW5ndWFnZXM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBjdXN0b20gdHJhbnNsYXRpb25zLiBJdCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIChodHRwczovL2N1bXVsb2NpdHkuY29tL2d1aWRlcy91c2Vycy1ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQvI2EtbmFtZS1sYW5ndWFnZXMtYS1hdmFpbGFibGUtbGFuZ3VhZ2VzKVxuICAgKiBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleSBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIEVuZ2xpc2ggYW5kIHRoZSB2YWx1ZSAtIGl0cyB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogLSBgSG9tZWA6IFwiU3RhcnRzZWl0ZVwiXG4gICAqXG4gICAqIEZvciBleGFtcGxlIHlvdSBjYW4gYWRkIHRoZSB0cmFuc2xhdGlvbiBvZiB5b3VyIGN1c3RvbSBjb29raWUgYmFubmVyIGNvbmZpZ3VyZWQgaW4gdGhlIGJyYW5kaW5nIHNldHRpbmdzOlxuICAgKiBgYGBqc29uXG4gICAqIFwiaTE4bkV4dHJhXCI6IHtcbiAgICogICBcImRlXCI6IHtcbiAgICogICAgIFwiQWJvdXQgY29va2llcyBvbiBDdW11bG9jaXR5IElvVFwiOiBcIkluZm9ybWF0aW9uZW4genUgQ29va2llcyBpbiBDdW11bG9jaXR5IElvVFwiLFxuICAgKiAgICAgXCJDbGljayBBZ3JlZSBhbmQgUHJvY2VlZCB0byBhY2NlcHQgY29va2llcyBhbmQgZ28gZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIG9yIGNsaWNrIG9uIFByaXZhY3kgUG9saWN5IHRvIHNlZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIHVzZWQgY29va2llcy5cIjogXCJLbGlja2VuIFNpZSBhdWYgWnVzdGltbWVuIHVuZCBmb3J0ZmFocmVuLCB1bSBDb29raWVzIHp1IGFremVwdGllcmVuIHVuZCBkaXJla3QgenVyIFBsYXR0Zm9ybSB6dSBnZWxhbmdlbiwgb2RlciBrbGlja2VuIFNpZSBhdWYgRGF0ZW5zY2h1dHpyaWNodGxpbmllLCB1bSBkZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nZW4gZGVyIHZlcndlbmRldGVuIENvb2tpZXMgYW56dXplaWdlbi5cIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGkxOG5FeHRyYT86IEkxOG5FeHRyYTtcbiAgLyoqIFBhdGggdG8gdGhlIGZvbGRlciBmcm9tIHdoaWNoICoucG8gZmlsZXMgd2lsbCBiZSBsb2FkZWQuICovXG4gIGxvY2FsZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBcnJheSBvZiBVUkxzIHRvIGFkZGl0aW9uYWwgKi5jc3MgZmlsZXMgdG8gYmUgbG9hZGVkIGF0IHJ1bnRpbWUuICovXG4gIGV4dHJhQ3NzVXJscz86IHN0cmluZ1tdO1xuICAvKiogRG9jdW1lbnRhdGlvbiBsaW5rcyBzZXR0aW5ncy4gKi9cbiAgZG9jcz86IERvY3M7XG4gIC8qKiBBcHBsaWNhdGlvbiBpY29uIHRvIGJlIGRpc3BsYXllZCBpbiBhcHAgc3dpdGNoZXIgYW5kIGhlYWRlciBiYXIuICovXG4gIGljb24/OiBJY29uO1xuXG4gIC8vIFRoZXNlIGFyZSB0aGUgb2xkIG9wdGlvbnNcbiAgLyoqIEhpZGUgYXBwbGljYXRpb24gaW4gYXBwIHN3aXRjaGVyIChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAgbm9BcHBTd2l0Y2hlcj86IGJvb2xlYW47XG4gIC8qKiBIVE1MIHBhZ2UgdGl0bGUuICovXG4gIGdsb2JhbFRpdGxlPzogc3RyaW5nO1xuICAvKiogSGlkZSBcInBvd2VyZWQgYnlcIiBhbmQgdmVyc2lvbiBpbmZvIGF0IHRoZSBib3R0b20gb2YgdGhlIG5hdmlnYXRvciBhbmQgaW4gdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgaGlkZVBvd2VyZWQ/OiBib29sZWFuO1xuICAvKiogSGlkZXMgdGhlIFwiUGxhdGZvcm0gaW5mb3JtYXRpb25cIiBpbiB0aGUgcmlnaHQgZHJhd2VyLCB3aWxsIG92ZXJydWxlIHRoZSBcImhpZGVQb3dlcmVkXCIgb3B0aW9uICovXG4gIGhpZGVQbGF0Zm9ybUluZm9ybWF0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFVSTCB0byBzdXBwb3J0IHBhZ2UgKHNldCB0byBgZmFsc2VgIHRvIGhpZGUgdGhlIGxpbmspLiAqL1xuICBzdXBwb3J0VXJsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcGxhY2VtZW50IHN0cmluZyBmb3IgYHVzZXJgIGZpZWxkIGluIGF1ZGl0IGxvZ3MgZm9yIGFjdGlvbnMgcGVyZm9ybWVkIGJ5IGEgc3VwcG9ydCB1c2VyXG4gICAqIChhdmFpbGFibGUgcGxhY2Vob2xkZXJzOiBge3tzdXBwb3J0X3VzZXJ9fWAsIGB7e3N1cHBvcnRlZF91c2VyfX1gKS5cbiAgICovXG4gIHN1cHBvcnRVc2VyU3RyaW5nPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlzYWJsZXMgcmVhbHRpbWUgdXBkYXRlcyBvbiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UmVhbHRpbWVEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRqdXN0IHRoZSBkZWZhdWx0IHBhZ2VzaXplIG9mIDEwMCBpdGVtcyBvZiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UGFnZVNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaGlkZSB0aGUgaGludCB0aGF0IHRoZXJlIGFyZSBtb3JlIGRldmljZXMgd2l0aCBnZW8gY29vcmRpbmF0ZXMgdGhlbiBkaXNwbGF5ZWQgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldEhpZGVNYXhEZXZpY2VPbk1hcEhpbnQ/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgcmlnaHREcmF3ZXI/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgYnJlYWRjcnVtYnMgaW4gdGhlIGhlYWRlciBmb3IgZ3JvdXBzIGFuZCBkZXZpY2VzIChkZWZhdWx0OiBmYWxzZSkuICovXG4gIGJyZWFkY3J1bWJzPzogYm9vbGVhbjtcbiAgLyoqIENvbGxhcHNlIG5hdmlnYXRvciBvbiBpbml0aWFsIGxvYWQuICovXG4gIGhpZGVOYXZpZ2F0b3I/OiBib29sZWFuO1xuICAvKiogU2hvdyB0YWJzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiAqL1xuICB0YWJzSG9yaXpvbnRhbD86IGJvb2xlYW47XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmsgdG8gZGlzcGxheSBvbiBsb2dpbiBzY3JlZW4uICovXG4gIGxvZ2luRXh0cmFMaW5rPzogTG9naW5FeHRyYUxpbms7XG4gIC8qKiBFbmFibGUgb3IgZGlzYWJsZSBzdG9yYWdlIGxpbWl0YXRpb24gZmVhdHVyZS4gKi9cbiAgc3RvcmFnZUxpbWl0YXRpb25GZWF0dXJlRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBOYW1lIG9mIGNvbXBhbnkgaGFuZGxpbmcgc3VwcG9ydCByZXF1ZXN0cyBmcm9tIGFwcCB1c2VycyAoZGlzcGxheWVkIGluIG5vdGlmaWNhdGlvbiBtZXNzYWdlKS4gKi9cbiAgY29tcGFueU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdGVtcGxhdGUgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGRlZmF1bHQ6IGAnJHtkb2NzQmFzZVVybH0ke3BhcnRpYWxVcmx9J2ApLiAqL1xuICBndWlkZUhyZWZUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqIEJhc2UgVVJMIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzIChpbmNsdWRlIGB7eyB2ZXJzaW9uIH19YCBwbGFjZWhvbGRlciwgaWYgeW91IHdhbnQgdmVyc2lvbmVkIGxpbmtzKS4gKi9cbiAgZG9jc0Jhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKiBDU1Agc3RyaW5nIHRvIGJlIGFwcGxpZWQgdG8gYGluZGV4Lmh0bWxgIGJ5IHJlcGxhY2luZyBkZWZhdWx0IHZhbHVlcy4gKi9cbiAgY29udGVudFNlY3VyaXR5UG9saWN5Pzogc3RyaW5nO1xuICAvKiogRW5hYmxlcyBjbG91ZCBzZW5zb3Igd2l6YXJkICovXG4gIHNlbnNvclBob25lPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgb3IgaGlkZSBhIG5ld3NsZXR0ZXIgc3Vic2NyaXB0aW9uIGNoZWNrYm94IGluIGVkaXQgdXNlciBtb2RhbC4gKi9cbiAgbmV3c2xldHRlcj86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSByb290IG5vZGVfbW9kdWxlcyBkaXIgKHVzZWZ1bCB3aGVuIHdvcmtpbmcgaW4gbW9ub3JlcG8gc2V0dXAsIGUuZy4geWFybiB3b3Jrc3BhY2VzKS4gKi9cbiAgcm9vdE5vZGVNb2R1bGVzUGF0aD86IHN0cmluZztcbiAgLyoqIENvb2tpZSBCYW5uZXIgY29uZmlndXJhdGlvbiAqL1xuICBjb29raWVCYW5uZXI/OiBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uO1xuICAvKiogQ29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24uIEhlcmUgeW91IGNhbiBlbmFibGUgb3IgZGlzYWJsZSBjb29raWUgY2F0ZWdvcmllcyAqL1xuICBjb29raWVQcmVmZXJlbmNlcz86IENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbjtcbiAgLyoqIEEga2V5IGZvciB0aGUgcHJvZHVjdCBleHBlcmllbmNlIHNvZnR3YXJlIEdhaW5zaWdodC4gKi9cbiAgZ2FpbnNpZ2h0S2V5Pzogc3RyaW5nO1xuICAvKiogRGlzYWJsZSB1c2VyIHRyYWNraW5nICovXG4gIGRpc2FibGVUcmFja2luZz86IGJvb2xlYW47XG4gIC8qKiBOZ01vZHVsZSBleHBvcnQgZm9yIHBsdWdpbnMuICovXG4gIGV4cG9ydHM/OiBQbHVnaW5zRXhwb3J0c1tdO1xuICAvKiogTGlzdCBvZiBpbXBvcnRlZCByZW1vdGUgcGx1Z2lucy4gKi9cbiAgcmVtb3Rlcz86IFJlbW90ZVBsdWdpbnM7XG4gIC8qKiBUaGUgcGFja2FnZSBzb3VyY2UgYSBhcHBsaWNhdGlvbiBvcmlnaW5zIGZyb20gYXMgSUFwcGxpY2F0aW9uIG9yIHNpbXBseSB0aGUgaWQgb2YgdGhlIHNvdXJjZSAqL1xuICBzb3VyY2U/OiBzdHJpbmcgfCBudW1iZXIgfCBJQXBwbGljYXRpb247XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGFzc2V0cyB0byBjb3B5IHRvIHRoZSBidWlsZCBvdXRwdXQuXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL2NvcHktd2VicGFjay1wbHVnaW4gZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogYWJvdXQgdGhlIHBhdHRlcm5zIHRvIGFkZCBoZXJlLlxuICAgKi9cbiAgY29weT86IFtdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGVuYWJsZSBvciBkaXNhYmxlIGNvbnRleHQgaGVscCwgb3IgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmFzZSBVUkwgdXNlZCB0byBsb2FkIGl0cyBjb250ZW50cy5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRleHQgaGVscCB1c2VzIHRoZSBzYW1lIGJhc2UgVVJMIGFzIGRlZmluZWQgaW4gdGhlIGBkb2NzQmFzZVVybGAgb3B0aW9uXG4gICAqIChpZiB0aGlzIG9wdGlvbiBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZvbGxvd2luZyB2YWx1ZSB3aWxsIGJlIHVzZWQ6IGBodHRwczovL3d3dy5jdW11bG9jaXR5LmNvbS9ndWlkZXMve3t2ZXJzaW9ufX1gKS5cbiAgICogQWx0ZXJuYXRpdmVseSwgaWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQgaGVyZSwgaXQnbGwgYmUgdXNlZCBhcyB0aGUgYmFzZSBVUkxcbiAgICogYW5kIGFueSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZWxldmFudCBkb2NzIHZlcnNpb24uXG4gICAqL1xuICBjb250ZXh0SGVscD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBjb2NrcGl0IGFuZCBkZXZpY2VtYW5hZ2VtZW50IHVzZSB0aGUgb25seVJvb3RzIHF1ZXJ5IHRvIHJlc29sdmUgcm9vdCBub2Rlcy4gVGhpc1xuICAgKiBjb3VsZCBsZWFkIHRvIHBlcmZvcm1hbmNlIGlzc3VlcywgaWYgYSBjdXN0b21lciBoYXMgYSBsb3Qgb2Ygcm9vdCBub2Rlcy4gVGhlcmVmb3JlIHlvdSBjYW4gZGlzYWJsZVxuICAgKiB0aGUgdXNlIG9mIHRoaXMgcXVlcnkgd2l0aCB0aGlzIGZsYWcuXG4gICAqL1xuICBkaXNhYmxlT25seVJvb3RzUXVlcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGZvcmNlIHNob3dpbmcgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGZvcmNlU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzaG93IHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBpc1NldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgYSBXZWJTREsgYXBwIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi5cbiAgICogSW4gY2FzZSB5b3Ugd291bGQgbGlrZSB0byBkZXZlbG9wIGp1c3QgYSBzdGF0aWMgYXBwbGljYXRpb24sIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbnkga2luZCBvZiBhY2Nlc3MgdG8gdGhlIGJhY2tlbmQsXG4gICAqIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBkaXNhYmxlIHRoZSBsb2dpbiBzY3JlZW4uXG4gICAqIE5PVEU6IG5vdCBhbGwgV2ViU0RLIGNvbXBvbmVudHMgc3VwcG9ydCB0aGlzLCBzb21lIG1pZ2h0IHJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluIGFuZCB3b24ndCB3b3JrLlxuICAgKi9cbiAgbm9Mb2dpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiBzdXBwb3J0aW5nL2xvYWRpbmcgcGx1Z2lucyBmb3IgdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIG5vUGx1Z2lucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiB0aGUgdmVyc2lvbiB3YXJuaW5nIHdoaWNoIGlzIHNob3duIGluIHRoZSBkZXYgdG9vbHMuXG4gICAqL1xuICBub1ZlcnNpb25XYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgdGhlIG1hcCBsYXllcnMuIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIG9wZW4gc3RyZWV0IG1hcCBsYXllci5cbiAgICovXG4gIG1hcExheWVycz86IE1hcFRpbGVMYXllcltdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG9uIHRoZSBtYXBzLlxuICAgKi9cbiAgbWFwQ29uZmlnPzogTWFwRGVmYXVsdENvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBVUkwgdXNlZCB0byBmaW5kIGEgYWRkcmVzcyB2aWEgbWFwcXVlc3QuIENhbiBiZSBzZXQgdG8gZW1wdHkgdG8gZGlzYWJsZSB0aGUgZmluZCBhZGRyZXNzIGZlYXR1cmUgb24gdGhlIGxvY2F0aW9uIHRhYi5cbiAgICovXG4gIG1hcFF1ZXN0VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcERlZmF1bHRDb25maWcge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgem9vbSBsZXZlbCB0byBzZXQgb24gZWFjaCBuZXcgbWFwLlxuICAgKi9cbiAgem9vbUxldmVsPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY2VudGVyIHBvc2l0aW9uIG9mIGVhY2ggbmV3IG1hcC5cbiAgICovXG4gIGNlbnRlcj86IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVGlsZUxheWVyIHtcbiAgLyoqXG4gICAqIFRoZSBsYXllciB1cmwgaW4gdGhlIHNwZWNpZmljIGxlYWZsZXQgZm9ybWF0LlxuICAgKi9cbiAgbGF5ZXJVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucy4gTm90ZSB0aGlzIG9wdGlvbnMgYXJlIG5vdCB0eXBlZCBhcyBsZWFmbGV0IHNob3VsZCBub3QgYmUgYnkgZGVmYXVsdCBpbmNsdWRlZC4gVGhlIHR5cGUgZnJvbSBsZWFmbGV0IGlzIEwuVGlsZUxheWVyT3B0aW9ucy5cbiAgICovXG4gIG9wdGlvbnM6IGFueTtcbiAgLyoqXG4gICAqIEEgbGFiZWwgdG8gc2hvdyB0byB0aGUgZW5kIHVzZXIuXG4gICAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogRGVmaW5lIHRoZSBvcmRlciBvZiB0aGUgbGF5ZXJzIHRvIGJlIHNob3duIHRvIHRoZSB1c2VyLiBIaWdoZXN0IHByaW9yaXR5IGZpcnN0LlxuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlUGx1Z2lucyB7XG4gIC8qKlxuICAgKiBBIGtleSB2YWx1ZSBwYWlyLCB3aGlsZSB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgbW9kdWxlcyB0byBsb2FkIGFuZCB0aGVcbiAgICoga2V5IGlzIHRoZSBjb250ZXh0IHBhdGguXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGpzXG4gICAqIHtcbiAgICogICAgJ2NvY2twaXQnOiBbJ0hvbWVEYXNoYm9hcmRNb2R1bGUnLCAnRGF0YUV4cGxvcmVyRGFzaGJvYXJkJ10sXG4gICAqICAgICd3aWRnZXQtcGFja2FnZUAxLjAuMCc6IFsnRXh0ZW5kZWRNYXBXaWRnZXQnXVxuICAgKiB9XG4gICAqIGBgXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5zRXhwb3J0cyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQW5ndWxhciBtb2R1bGUgY2xhc3MuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBwYXRoIHRvIHRoZSBtb2R1bGUgdHlwZXNjcmlwdCBmaWxlLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogQW4gc2hvcnQgZGVzY3JpcHRpb24gYWJvdXQgd2hhdCB0aGUgbW9kdWxlIGRvZXMuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzY29wZSB0aGUgcGx1Z2luIHRvIGNlcnRhaW4gYXBwbGljYXRpb25zLiBFLmcuIGlmIHlvdVxuICAgKiBhZGQgaGVyZSAnY29ja3BpdCcsIHRoZSBwbHVnaW4gY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGludG8gYW5cbiAgICogYXBwbGljYXRpb24gb24gdGhlIGNvbnRleHRQYXRoIGBhcHBzL2NvY2twaXRgLiBZb3UgY2FuIHVzZSBjb21tYVxuICAgKiBzZXBhcmF0ZWQgdmFsdWVzLCBhc3RlcmlzayAoZGVmYXVsdCkgdG8gYWxsb3cgYWxsIGFwcGxpY2F0aW9ucyBvclxuICAgKiBgc2VsZmAgdG8gbGltaXQgdGhlIHBsdWdpbiB0byB0aGUgY3VycmVudCBzb2x1dGlvbi5cbiAgICovXG4gIHNjb3BlPzogJyonIHwgJ3NlbGYnIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb24ge1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgdGl0bGUgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUaXRsZT86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIFRleHQgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUZXh0Pzogc3RyaW5nO1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgcG9saWN5VXJsIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgcG9saWN5VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGxvZ2dpbmcgaW4gICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiB0cmFja2luZyBjb29raWVzICAqL1xuICBmdW5jdGlvbmFsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiBjb29raWVzIHJlbGF0ZWQgdG8gYWR2ZXJ0aXNpbmcgICovXG4gIG1hcmtldGluZz86IGJvb2xlYW4gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5FeHRyYUxpbmsge1xuICB1cmw6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY29uIHtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzIHtcbiAgLyoqIEhpZGUgZGVmYXVsdCBsaW5rcyB0byBkb2N1bWVudGF0aW9uLiAqL1xuICBub0RlZmF1bHQ6IGJvb2xlYW47XG4gIC8qKiBMaXN0IG9mIHJlZ2V4IHN0cmluZ3MuIE1hdGNoaW5nIGRlZmF1bHQgZG9jcyBVUkxzIHdpbGwgYmUgaGlkZGVuLiAqL1xuICBleGNsdWRlRGVmYXVsdDogc3RyaW5nW107XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmtzIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgbGlua3M6IExpbmtzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua3Mge1xuICAvKiogSWNvbiBjbGFzc2VzIHdpdGggYGM4eS1pY29uYCwgZS5nLiBgYzh5LWljb24gYzh5LWljb24tYWRkLXVzZXJgIG9yIGBjOHktaWNvbiBjOHktaWNvbi1kZXZpY2UtY29ubmVjdGAuICovXG4gIGljb246IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHR5cGU6ICdkb2MnIHwgJ3F1aWNrbGluayc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBJMThuRXh0cmFMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuRXh0cmFMYW5nQ29kZSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXMge1xuICBbbGFuZ0NvZGU6IHN0cmluZ106IExhbmd1YWdlc0xhbmdDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlc0xhbmdDb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kaW5nQ3NzVmFycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cbiJdfQ==
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBNE05QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYlNESyB2ZXJzaW9uICovXG4gIHdlYlNka1ZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBoeWJyaWQgYW5kIHVzZXMgQW5ndWxhciBhbmQgQW5ndWxhckpTIHNpbXVsdGFuZW91c2x5LiAqL1xuICB1cGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIGJyYW5kaW5nIGVudHJ5IGZpbGUuIChTZXQgaXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBhbnkgc3R5bGluZy4gWW91IGNhbiBoYW5kbGUgdGhlIHN0eWxpbmcgdGhlbiBvbiB5b3VyIG93biBlLmcuIGluIGFuIGFuZ3VsYXIuanNvbiBmaWxlIHVzaW5nIG5nLWNsaSkgKi9cbiAgYnJhbmRpbmdFbnRyeT86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byBmYXZpY29uLiAqL1xuICBmYXZpY29uVXJsPzogc3RyaW5nO1xuICAvKiogVVJMIHRvICouY3NzIGZpbGUgd2hpY2ggd2lsbCByZXBsYWNlIGRlZmF1bHQgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nVXJsPzogc3RyaW5nO1xuICAvKiogT2JqZWN0IHdpdGggcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIENTUyBjdXN0b20gdmFyaWFibGVzLiAqL1xuICBicmFuZGluZ0Nzc1ZhcnM/OiBCcmFuZGluZ0Nzc1ZhcnM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBvciBvdmVycmlkaW5nIGxhbmd1YWdlcyBhdmFpbGFibGUgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBJdHMga2V5cyBhcmUgbGFuZ3VhZ2UgY29kZXMgYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIC0gYG5hbWVgOiBFbmdsaXNoIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGBuYXRpdmVOYW1lYDogbmF0aXZlIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGB1cmxgOiBmdWxsIFVSTCB0byBKU09OIGZpbGUgd2l0aCBjb21waWxlZCB0cmFuc2xhdGlvbnM7XG4gICAqICAgIGlmIG5vdCBkZWZpbmVkLCB0cmFuc2xhdGlvbnMgd2lsbCBiZSBsb2FkZWQgZnJvbSBgJHtsb2NhbGVQYXRofS8ke2xhbmdDb2RlfS5qc29uYC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBganNvblxuICAgKiBcImxhbmd1YWdlc1wiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIm5hbWVcIjogXCJHZXJtYW5cIixcbiAgICogICAgIFwibmF0aXZlTmFtZVwiOiBcIkRldXRzY2hcIixcbiAgICogICAgIFwidXJsXCI6IFwiL2FwcHMvcHVibGljL3VpLWFzc2V0cy9kZS5qc29uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsYW5ndWFnZXM/OiBMYW5ndWFnZXM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBjdXN0b20gdHJhbnNsYXRpb25zLiBJdCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIChodHRwczovL2N1bXVsb2NpdHkuY29tL2d1aWRlcy91c2Vycy1ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQvI2EtbmFtZS1sYW5ndWFnZXMtYS1hdmFpbGFibGUtbGFuZ3VhZ2VzKVxuICAgKiBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleSBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIEVuZ2xpc2ggYW5kIHRoZSB2YWx1ZSAtIGl0cyB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogLSBgSG9tZWA6IFwiU3RhcnRzZWl0ZVwiXG4gICAqXG4gICAqIEZvciBleGFtcGxlIHlvdSBjYW4gYWRkIHRoZSB0cmFuc2xhdGlvbiBvZiB5b3VyIGN1c3RvbSBjb29raWUgYmFubmVyIGNvbmZpZ3VyZWQgaW4gdGhlIGJyYW5kaW5nIHNldHRpbmdzOlxuICAgKiBgYGBqc29uXG4gICAqIFwiaTE4bkV4dHJhXCI6IHtcbiAgICogICBcImRlXCI6IHtcbiAgICogICAgIFwiQWJvdXQgY29va2llcyBvbiBDdW11bG9jaXR5IElvVFwiOiBcIkluZm9ybWF0aW9uZW4genUgQ29va2llcyBpbiBDdW11bG9jaXR5IElvVFwiLFxuICAgKiAgICAgXCJDbGljayBBZ3JlZSBhbmQgUHJvY2VlZCB0byBhY2NlcHQgY29va2llcyBhbmQgZ28gZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIG9yIGNsaWNrIG9uIFByaXZhY3kgUG9saWN5IHRvIHNlZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgdGhlIHVzZWQgY29va2llcy5cIjogXCJLbGlja2VuIFNpZSBhdWYgWnVzdGltbWVuIHVuZCBmb3J0ZmFocmVuLCB1bSBDb29raWVzIHp1IGFremVwdGllcmVuIHVuZCBkaXJla3QgenVyIFBsYXR0Zm9ybSB6dSBnZWxhbmdlbiwgb2RlciBrbGlja2VuIFNpZSBhdWYgRGF0ZW5zY2h1dHpyaWNodGxpbmllLCB1bSBkZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nZW4gZGVyIHZlcndlbmRldGVuIENvb2tpZXMgYW56dXplaWdlbi5cIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGkxOG5FeHRyYT86IEkxOG5FeHRyYTtcbiAgLyoqIFBhdGggdG8gdGhlIGZvbGRlciBmcm9tIHdoaWNoICoucG8gZmlsZXMgd2lsbCBiZSBsb2FkZWQuICovXG4gIGxvY2FsZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBcnJheSBvZiBVUkxzIHRvIGFkZGl0aW9uYWwgKi5jc3MgZmlsZXMgdG8gYmUgbG9hZGVkIGF0IHJ1bnRpbWUuICovXG4gIGV4dHJhQ3NzVXJscz86IHN0cmluZ1tdO1xuICAvKiogRG9jdW1lbnRhdGlvbiBsaW5rcyBzZXR0aW5ncy4gKi9cbiAgZG9jcz86IERvY3M7XG4gIC8qKiBBcHBsaWNhdGlvbiBpY29uIHRvIGJlIGRpc3BsYXllZCBpbiBhcHAgc3dpdGNoZXIgYW5kIGhlYWRlciBiYXIuICovXG4gIGljb24/OiBJY29uO1xuXG4gIC8vIFRoZXNlIGFyZSB0aGUgb2xkIG9wdGlvbnNcbiAgLyoqIEhpZGUgYXBwbGljYXRpb24gaW4gYXBwIHN3aXRjaGVyIChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAgbm9BcHBTd2l0Y2hlcj86IGJvb2xlYW47XG4gIC8qKiBIVE1MIHBhZ2UgdGl0bGUuICovXG4gIGdsb2JhbFRpdGxlPzogc3RyaW5nO1xuICAvKiogSGlkZSBcInBvd2VyZWQgYnlcIiBhbmQgdmVyc2lvbiBpbmZvIGF0IHRoZSBib3R0b20gb2YgdGhlIG5hdmlnYXRvciBhbmQgaW4gdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgaGlkZVBvd2VyZWQ/OiBib29sZWFuO1xuICAvKiogSGlkZXMgdGhlIFwiUGxhdGZvcm0gaW5mb3JtYXRpb25cIiBpbiB0aGUgcmlnaHQgZHJhd2VyLCB3aWxsIG92ZXJydWxlIHRoZSBcImhpZGVQb3dlcmVkXCIgb3B0aW9uICovXG4gIGhpZGVQbGF0Zm9ybUluZm9ybWF0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFVSTCB0byBzdXBwb3J0IHBhZ2UgKHNldCB0byBgZmFsc2VgIHRvIGhpZGUgdGhlIGxpbmspLiAqL1xuICBzdXBwb3J0VXJsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcGxhY2VtZW50IHN0cmluZyBmb3IgYHVzZXJgIGZpZWxkIGluIGF1ZGl0IGxvZ3MgZm9yIGFjdGlvbnMgcGVyZm9ybWVkIGJ5IGEgc3VwcG9ydCB1c2VyXG4gICAqIChhdmFpbGFibGUgcGxhY2Vob2xkZXJzOiBge3tzdXBwb3J0X3VzZXJ9fWAsIGB7e3N1cHBvcnRlZF91c2VyfX1gKS5cbiAgICovXG4gIHN1cHBvcnRVc2VyU3RyaW5nPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlzYWJsZXMgcmVhbHRpbWUgdXBkYXRlcyBvbiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UmVhbHRpbWVEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRqdXN0IHRoZSBkZWZhdWx0IHBhZ2VzaXplIG9mIDEwMCBpdGVtcyBvZiB0aGUgbWFwIHdpZGdldCBhbmQgbWFwcyBpbiBnZW5lcmFsLlxuICAgKi9cbiAgbWFwV2lkZ2V0UGFnZVNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gaGlkZSB0aGUgaGludCB0aGF0IHRoZXJlIGFyZSBtb3JlIGRldmljZXMgd2l0aCBnZW8gY29vcmRpbmF0ZXMgdGhlbiBkaXNwbGF5ZWQgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldEhpZGVNYXhEZXZpY2VPbk1hcEhpbnQ/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHJpZ2h0IGRyYXdlci4gKi9cbiAgcmlnaHREcmF3ZXI/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgYnJlYWRjcnVtYnMgaW4gdGhlIGhlYWRlciBmb3IgZ3JvdXBzIGFuZCBkZXZpY2VzIChkZWZhdWx0OiBmYWxzZSkuICovXG4gIGJyZWFkY3J1bWJzPzogYm9vbGVhbjtcbiAgLyoqIENvbGxhcHNlIG5hdmlnYXRvciBvbiBpbml0aWFsIGxvYWQuICovXG4gIGhpZGVOYXZpZ2F0b3I/OiBib29sZWFuO1xuICAvKiogU2hvdyB0YWJzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiAqL1xuICB0YWJzSG9yaXpvbnRhbD86IGJvb2xlYW47XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmsgdG8gZGlzcGxheSBvbiBsb2dpbiBzY3JlZW4uICovXG4gIGxvZ2luRXh0cmFMaW5rPzogTG9naW5FeHRyYUxpbms7XG4gIC8qKiBFbmFibGUgb3IgZGlzYWJsZSBzdG9yYWdlIGxpbWl0YXRpb24gZmVhdHVyZS4gKi9cbiAgc3RvcmFnZUxpbWl0YXRpb25GZWF0dXJlRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBOYW1lIG9mIGNvbXBhbnkgaGFuZGxpbmcgc3VwcG9ydCByZXF1ZXN0cyBmcm9tIGFwcCB1c2VycyAoZGlzcGxheWVkIGluIG5vdGlmaWNhdGlvbiBtZXNzYWdlKS4gKi9cbiAgY29tcGFueU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdGVtcGxhdGUgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGRlZmF1bHQ6IGAnJHtkb2NzQmFzZVVybH0ke3BhcnRpYWxVcmx9J2ApLiAqL1xuICBndWlkZUhyZWZUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqIEJhc2UgVVJMIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzIChpbmNsdWRlIGB7eyB2ZXJzaW9uIH19YCBwbGFjZWhvbGRlciwgaWYgeW91IHdhbnQgdmVyc2lvbmVkIGxpbmtzKS4gKi9cbiAgZG9jc0Jhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKiBDU1Agc3RyaW5nIHRvIGJlIGFwcGxpZWQgdG8gYGluZGV4Lmh0bWxgIGJ5IHJlcGxhY2luZyBkZWZhdWx0IHZhbHVlcy4gKi9cbiAgY29udGVudFNlY3VyaXR5UG9saWN5Pzogc3RyaW5nO1xuICAvKiogRW5hYmxlcyBjbG91ZCBzZW5zb3Igd2l6YXJkICovXG4gIHNlbnNvclBob25lPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgb3IgaGlkZSBhIG5ld3NsZXR0ZXIgc3Vic2NyaXB0aW9uIGNoZWNrYm94IGluIGVkaXQgdXNlciBtb2RhbC4gKi9cbiAgbmV3c2xldHRlcj86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSByb290IG5vZGVfbW9kdWxlcyBkaXIgKHVzZWZ1bCB3aGVuIHdvcmtpbmcgaW4gbW9ub3JlcG8gc2V0dXAsIGUuZy4geWFybiB3b3Jrc3BhY2VzKS4gKi9cbiAgcm9vdE5vZGVNb2R1bGVzUGF0aD86IHN0cmluZztcbiAgLyoqIENvb2tpZSBCYW5uZXIgY29uZmlndXJhdGlvbiAqL1xuICBjb29raWVCYW5uZXI/OiBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uO1xuICAvKiogQ29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24uIEhlcmUgeW91IGNhbiBlbmFibGUgb3IgZGlzYWJsZSBjb29raWUgY2F0ZWdvcmllcyAqL1xuICBjb29raWVQcmVmZXJlbmNlcz86IENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbjtcbiAgLyoqIEEga2V5IGZvciB0aGUgcHJvZHVjdCBleHBlcmllbmNlIHNvZnR3YXJlIEdhaW5zaWdodC4gKi9cbiAgZ2FpbnNpZ2h0S2V5Pzogc3RyaW5nO1xuICAvKiogRGlzYWJsZSB1c2VyIHRyYWNraW5nICovXG4gIGRpc2FibGVUcmFja2luZz86IGJvb2xlYW47XG4gIC8qKiBOZ01vZHVsZSBleHBvcnQgZm9yIHBsdWdpbnMuICovXG4gIGV4cG9ydHM/OiBQbHVnaW5zRXhwb3J0c1tdO1xuICAvKiogTGlzdCBvZiBpbXBvcnRlZCByZW1vdGUgcGx1Z2lucy4gKi9cbiAgcmVtb3Rlcz86IFJlbW90ZVBsdWdpbnM7XG4gIC8qKiBUaGUgcGFja2FnZSBzb3VyY2UgYSBhcHBsaWNhdGlvbiBvcmlnaW5zIGZyb20gYXMgSUFwcGxpY2F0aW9uIG9yIHNpbXBseSB0aGUgaWQgb2YgdGhlIHNvdXJjZSAqL1xuICBzb3VyY2U/OiBzdHJpbmcgfCBudW1iZXIgfCBJQXBwbGljYXRpb247XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGFzc2V0cyB0byBjb3B5IHRvIHRoZSBidWlsZCBvdXRwdXQuXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL2NvcHktd2VicGFjay1wbHVnaW4gZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogYWJvdXQgdGhlIHBhdHRlcm5zIHRvIGFkZCBoZXJlLlxuICAgKi9cbiAgY29weT86IFtdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGVuYWJsZSBvciBkaXNhYmxlIGNvbnRleHQgaGVscCwgb3IgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmFzZSBVUkwgdXNlZCB0byBsb2FkIGl0cyBjb250ZW50cy5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRleHQgaGVscCB1c2VzIHRoZSBzYW1lIGJhc2UgVVJMIGFzIGRlZmluZWQgaW4gdGhlIGBkb2NzQmFzZVVybGAgb3B0aW9uXG4gICAqIChpZiB0aGlzIG9wdGlvbiBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZvbGxvd2luZyB2YWx1ZSB3aWxsIGJlIHVzZWQ6IGBodHRwczovL3d3dy5jdW11bG9jaXR5LmNvbS9ndWlkZXMve3t2ZXJzaW9ufX1gKS5cbiAgICogQWx0ZXJuYXRpdmVseSwgaWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQgaGVyZSwgaXQnbGwgYmUgdXNlZCBhcyB0aGUgYmFzZSBVUkxcbiAgICogYW5kIGFueSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZWxldmFudCBkb2NzIHZlcnNpb24uXG4gICAqL1xuICBjb250ZXh0SGVscD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBjb2NrcGl0IGFuZCBkZXZpY2VtYW5hZ2VtZW50IHVzZSB0aGUgb25seVJvb3RzIHF1ZXJ5IHRvIHJlc29sdmUgcm9vdCBub2Rlcy4gVGhpc1xuICAgKiBjb3VsZCBsZWFkIHRvIHBlcmZvcm1hbmNlIGlzc3VlcywgaWYgYSBjdXN0b21lciBoYXMgYSBsb3Qgb2Ygcm9vdCBub2Rlcy4gVGhlcmVmb3JlIHlvdSBjYW4gZGlzYWJsZVxuICAgKiB0aGUgdXNlIG9mIHRoaXMgcXVlcnkgd2l0aCB0aGlzIGZsYWcuXG4gICAqL1xuICBkaXNhYmxlT25seVJvb3RzUXVlcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGZvcmNlIHNob3dpbmcgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGZvcmNlU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzaG93IHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBpc1NldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgYSBXZWJTREsgYXBwIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi5cbiAgICogSW4gY2FzZSB5b3Ugd291bGQgbGlrZSB0byBkZXZlbG9wIGp1c3QgYSBzdGF0aWMgYXBwbGljYXRpb24sIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBhbnkga2luZCBvZiBhY2Nlc3MgdG8gdGhlIGJhY2tlbmQsXG4gICAqIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBkaXNhYmxlIHRoZSBsb2dpbiBzY3JlZW4uXG4gICAqIE5PVEU6IG5vdCBhbGwgV2ViU0RLIGNvbXBvbmVudHMgc3VwcG9ydCB0aGlzLCBzb21lIG1pZ2h0IHJlcXVpcmUgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluIGFuZCB3b24ndCB3b3JrLlxuICAgKi9cbiAgbm9Mb2dpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiBzdXBwb3J0aW5nL2xvYWRpbmcgcGx1Z2lucyBmb3IgdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIG5vUGx1Z2lucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gb3B0IG91dCBvZiB0aGUgdmVyc2lvbiB3YXJuaW5nIHdoaWNoIGlzIHNob3duIGluIHRoZSBkZXYgdG9vbHMuXG4gICAqL1xuICBub1ZlcnNpb25XYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgdGhlIG1hcCBsYXllcnMuIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIG9wZW4gc3RyZWV0IG1hcCBsYXllci5cbiAgICovXG4gIG1hcExheWVycz86IE1hcFRpbGVMYXllcltdO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG9uIHRoZSBtYXBzLlxuICAgKi9cbiAgbWFwQ29uZmlnPzogTWFwRGVmYXVsdENvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBVUkwgdXNlZCB0byBsb29rdXAgZ2VvIGNvb3JkaW5hdGVzIGZvciBhIHVzZXIgcHJvdmlkZWQgYWRkcmVzcyB2aWEgW25vbWluYXRpbSBBUEldKGh0dHBzOi8vbm9taW5hdGltLm9yZy9yZWxlYXNlLWRvY3MvZGV2ZWxvcC9hcGkvU2VhcmNoLykuXG4gICAqIENhbiBiZSBzZXQgdG8gZW1wdHkgdG8gZGlzYWJsZSB0aGUgZmluZCBhZGRyZXNzIGZlYXR1cmUgb24gdGhlIGxvY2F0aW9uIHRhYi5cbiAgICogVXNlczogYGh0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZxPXtzZWFyY2hUZXJtfWAgaWYgbm90IHNldC5cbiAgICovXG4gIG1hcE5vbWluYXRpbVVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEZWZhdWx0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHpvb20gbGV2ZWwgdG8gc2V0IG9uIGVhY2ggbmV3IG1hcC5cbiAgICovXG4gIHpvb21MZXZlbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGNlbnRlciBwb3NpdGlvbiBvZiBlYWNoIG5ldyBtYXAuXG4gICAqL1xuICBjZW50ZXI/OiBbbnVtYmVyLCBudW1iZXJdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFRpbGVMYXllciB7XG4gIC8qKlxuICAgKiBUaGUgbGF5ZXIgdXJsIGluIHRoZSBzcGVjaWZpYyBsZWFmbGV0IGZvcm1hdC5cbiAgICovXG4gIGxheWVyVXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMuIE5vdGUgdGhpcyBvcHRpb25zIGFyZSBub3QgdHlwZWQgYXMgbGVhZmxldCBzaG91bGQgbm90IGJlIGJ5IGRlZmF1bHQgaW5jbHVkZWQuIFRoZSB0eXBlIGZyb20gbGVhZmxldCBpcyBMLlRpbGVMYXllck9wdGlvbnMuXG4gICAqL1xuICBvcHRpb25zOiBhbnk7XG4gIC8qKlxuICAgKiBBIGxhYmVsIHRvIHNob3cgdG8gdGhlIGVuZCB1c2VyLlxuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZSB0aGUgb3JkZXIgb2YgdGhlIGxheWVycyB0byBiZSBzaG93biB0byB0aGUgdXNlci4gSGlnaGVzdCBwcmlvcml0eSBmaXJzdC5cbiAgICovXG4gIHByaW9yaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZVBsdWdpbnMge1xuICAvKipcbiAgICogQSBrZXkgdmFsdWUgcGFpciwgd2hpbGUgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIG1vZHVsZXMgdG8gbG9hZCBhbmQgdGhlXG4gICAqIGtleSBpcyB0aGUgY29udGV4dCBwYXRoLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB7XG4gICAqICAgICdjb2NrcGl0JzogWydIb21lRGFzaGJvYXJkTW9kdWxlJywgJ0RhdGFFeHBsb3JlckRhc2hib2FyZCddLFxuICAgKiAgICAnd2lkZ2V0LXBhY2thZ2VAMS4wLjAnOiBbJ0V4dGVuZGVkTWFwV2lkZ2V0J11cbiAgICogfVxuICAgKiBgYFxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luc0V4cG9ydHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFuZ3VsYXIgbW9kdWxlIGNsYXNzLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgcGF0aCB0byB0aGUgbW9kdWxlIHR5cGVzY3JpcHQgZmlsZS5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHdoYXQgdGhlIG1vZHVsZSBkb2VzLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2NvcGUgdGhlIHBsdWdpbiB0byBjZXJ0YWluIGFwcGxpY2F0aW9ucy4gRS5nLiBpZiB5b3VcbiAgICogYWRkIGhlcmUgJ2NvY2twaXQnLCB0aGUgcGx1Z2luIGNhbiBvbmx5IGJlIGluc3RhbGxlZCBpbnRvIGFuXG4gICAqIGFwcGxpY2F0aW9uIG9uIHRoZSBjb250ZXh0UGF0aCBgYXBwcy9jb2NrcGl0YC4gWW91IGNhbiB1c2UgY29tbWFcbiAgICogc2VwYXJhdGVkIHZhbHVlcywgYXN0ZXJpc2sgKGRlZmF1bHQpIHRvIGFsbG93IGFsbCBhcHBsaWNhdGlvbnMgb3JcbiAgICogYHNlbGZgIHRvIGxpbWl0IHRoZSBwbHVnaW4gdG8gdGhlIGN1cnJlbnQgc29sdXRpb24uXG4gICAqL1xuICBzY29wZT86ICcqJyB8ICdzZWxmJyB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHRpdGxlIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSBUZXh0IG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGV4dD86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHBvbGljeVVybCBvZiBDb29raWUgQmFubmVyICovXG4gIHBvbGljeVVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb24ge1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIGNvb2tpZXMgcmVsYXRlZCB0byBsb2dnaW5nIGluICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gdHJhY2tpbmcgY29va2llcyAgKi9cbiAgZnVuY3Rpb25hbD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGFkdmVydGlzaW5nICAqL1xuICBtYXJrZXRpbmc/OiBib29sZWFuIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luRXh0cmFMaW5rIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XG4gIGNsYXNzPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jcyB7XG4gIC8qKiBIaWRlIGRlZmF1bHQgbGlua3MgdG8gZG9jdW1lbnRhdGlvbi4gKi9cbiAgbm9EZWZhdWx0OiBib29sZWFuO1xuICAvKiogTGlzdCBvZiByZWdleCBzdHJpbmdzLiBNYXRjaGluZyBkZWZhdWx0IGRvY3MgVVJMcyB3aWxsIGJlIGhpZGRlbi4gKi9cbiAgZXhjbHVkZURlZmF1bHQ6IHN0cmluZ1tdO1xuICAvKiogQWRkaXRpb25hbCBsaW5rcyB0byBiZSBkaXNwbGF5ZWQuICovXG4gIGxpbmtzOiBMaW5rc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtzIHtcbiAgLyoqIEljb24gY2xhc3NlcyB3aXRoIGBjOHktaWNvbmAsIGUuZy4gYGM4eS1pY29uIGM4eS1pY29uLWFkZC11c2VyYCBvciBgYzh5LWljb24gYzh5LWljb24tZGV2aWNlLWNvbm5lY3RgLiAqL1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICB0eXBlOiAnZG9jJyB8ICdxdWlja2xpbmsnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5FeHRyYSB7XG4gIFtsYW5nQ29kZTogc3RyaW5nXTogSTE4bkV4dHJhTGFuZ0NvZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhTGFuZ0NvZGUge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VzIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBMYW5ndWFnZXNMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXNMYW5nQ29kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbmF0aXZlTmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuZGluZ0Nzc1ZhcnMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -140,6 +140,22 @@ export class FilesService {
|
|
|
140
140
|
const allowedExts = this.extractFileExtensions(accept);
|
|
141
141
|
return filesExts.every(ext => allowedExts.includes(ext));
|
|
142
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Checks if file names have allowed extension.
|
|
145
|
+
* If the accept parameter is not specified, all extensions are accepted.
|
|
146
|
+
* @param fileNames The file names to check.
|
|
147
|
+
* @param accept String of comma separated file extensions and generic types ([GENERIC_FILE_TYPE]{@link GENERIC_FILE_TYPE}), e.g. .zip,.7z,excel.
|
|
148
|
+
* @returns Returns true if each file has allowed extension.
|
|
149
|
+
*/
|
|
150
|
+
fileNamesHaveValidExtension(fileNames, accept) {
|
|
151
|
+
if (!accept) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
fileNames = Array.isArray(fileNames) ? fileNames : [fileNames];
|
|
155
|
+
const filesExts = fileNames.map((file) => this.getFileExtension(file)?.toLowerCase());
|
|
156
|
+
const allowedExts = this.extractFileExtensions(accept);
|
|
157
|
+
return filesExts.every(ext => allowedExts.includes(ext));
|
|
158
|
+
}
|
|
143
159
|
/**
|
|
144
160
|
* Checks if each file has a valid filename length.
|
|
145
161
|
* @param files Files to check.
|
|
@@ -152,11 +168,11 @@ export class FilesService {
|
|
|
152
168
|
}
|
|
153
169
|
/**
|
|
154
170
|
* Extracts the file extension.
|
|
155
|
-
* @param
|
|
171
|
+
* @param fileOrFileName File or name of file from which the extension should be extracted.
|
|
156
172
|
* @returns Returns the file extension or undefined if the file has no extension.
|
|
157
173
|
*/
|
|
158
|
-
getFileExtension(
|
|
159
|
-
const fileNameAndFileExt =
|
|
174
|
+
getFileExtension(fileOrFileName) {
|
|
175
|
+
const fileNameAndFileExt = (typeof fileOrFileName === 'string' ? fileOrFileName : fileOrFileName.name).split('.');
|
|
160
176
|
if (fileNameAndFileExt.length === 1) {
|
|
161
177
|
// no file ext
|
|
162
178
|
return undefined;
|
|
@@ -352,4 +368,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
352
368
|
type: Injectable,
|
|
353
369
|
args: [{ providedIn: 'root' }]
|
|
354
370
|
}], ctorParameters: function () { return [{ type: i1.SystemOptionsService }, { type: i1.InventoryBinaryService }]; } });
|
|
355
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2ZpbGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNyQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVd6RSxNQUFNLENBQU4sSUFBWSxpQkFZWDtBQVpELFdBQVksaUJBQWlCO0lBQzNCLHdDQUFtQixDQUFBO0lBQ25CLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0lBQ2Isb0NBQWUsQ0FBQTtJQUNmLG9DQUFlLENBQUE7SUFDZixnQ0FBVyxDQUFBO0lBQ1gsOENBQXlCLENBQUE7SUFDekIsa0NBQWEsQ0FBQTtJQUNiLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0lBQ2IsZ0NBQVcsQ0FBQTtBQUNiLENBQUMsRUFaVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBWTVCO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFpRHZCLFlBQ1Usb0JBQTBDLEVBQzFDLHNCQUE4QztRQUQ5Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FB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QUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQzt3QkFDdkYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDO1lBQ0YsVUFBVSxFQUFFLENBQUM7WUFFYixPQUFPO2dCQUNMLFdBQVc7b0JBQ1QsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN4QixHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVk7UUFDaEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQXlCLENBQUMsQ0FBQztJQUM5RSxDQUFDOzt5R0F6WFUsWUFBWTs2R0FBWixZQUFZLGNBREMsTUFBTTsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJRmV0Y2hSZXNwb25zZSxcbiAgSU1hbmFnZWRPYmplY3RCaW5hcnksXG4gIEludmVudG9yeUJpbmFyeVNlcnZpY2UsXG4gIFN5c3RlbU9wdGlvbnNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGV2ZXJ5LCBmaXJzdCwgZmxhdHRlbiwgZ2V0LCBpc05hTiwgaXNVbmRlZmluZWQsIGtleXMsIG1hcCwgdW5pcSwgbWluIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCBzdGFydFdpdGgsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RyZWFtIH0gZnJvbSAnc3RyZWFtJztcblxuZXhwb3J0IGludGVyZmFjZSBJRmV0Y2hXaXRoUHJvZ3Jlc3Mge1xuICB0b3RhbEJ5dGVzOiBudW1iZXI7XG4gIGJ1ZmZlcmVkQnl0ZXM6IG51bWJlcjtcbiAgcGVyY2VudGFnZTogbnVtYmVyO1xuICBieXRlc1BlclNlY29uZDogbnVtYmVyO1xuICBibG9iPzogQmxvYjtcbn1cblxuZXhwb3J0IGVudW0gR0VORVJJQ19GSUxFX1RZUEUge1xuICBBUkNISVZFID0gJ2FyY2hpdmUnLFxuICBBVURJTyA9ICdhdWRpbycsXG4gIENPREUgPSAnY29kZScsXG4gIEVYQ0VMID0gJ2V4Y2VsJyxcbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBQREYgPSAncGRmJyxcbiAgUE9XRVJQT0lOVCA9ICdwb3dlcnBvaW50JyxcbiAgVEVYVCA9ICd0ZXh0JyxcbiAgVklERU8gPSAndmlkZW8nLFxuICBXT1JEID0gJ3dvcmQnLFxuICBFUEwgPSAnZXBsJ1xufVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGaWxlc1NlcnZpY2Uge1xuICByZWFkb25seSBERUZBVUxUX0JZVEVTX0xJTUlUID0gNTI0Mjg4MDA7XG4gIHJlYWRvbmx5IEZJTEVOQU1FX01BWF9MRU5HVEggPSAxMjg7XG5cbiAgZmlsZVR5cGVFeHRlbnNpb25zTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgZXh0czogc3RyaW5nW10gfSB9ID0ge1xuICAgIFtHRU5FUklDX0ZJTEVfVFlQRS5BUkNISVZFXToge1xuICAgICAgZXh0czogWyc3eicsICdhcGsnLCAnY2FiJywgJ2d6JywgJ2lzbycsICdqYXInLCAncmFyJywgJ3RhcicsICd6aXAnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLkFVRElPXToge1xuICAgICAgZXh0czogWyczZ3AnLCAnYWlmZicsICdhYWMnLCAnYW1yJywgJ200YScsICdtNHAnLCAnbXAzJywgJ29nYScsICdvZ2cnLCAncmF3JywgJ3dhdicsICd3bWEnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLkNPREVdOiB7XG4gICAgICBleHRzOiBbJ2FzcHgnLCAnZXhlJywgJ2h0bScsICdodG1sJywgJ2phZCcsICdqcycsICdqc29uJywgJ2pzcCcsICdwaHAnLCAneG1sJ11cbiAgICB9LFxuICAgIFtHRU5FUklDX0ZJTEVfVFlQRS5FWENFTF06IHtcbiAgICAgIGV4dHM6IFsneGxzJywgJ3hsc3gnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLklNQUdFXToge1xuICAgICAgZXh0czogWydibXAnLCAnZ2lmJywgJ2pwZWcnLCAnanBnJywgJ3BuZycsICd0aWZmJywgJ3N2ZycsICdpY28nLCAnYXBuZycsICd3ZWJwJ11cbiAgICB9LFxuICAgIFtHRU5FUklDX0ZJTEVfVFlQRS5QREZdOiB7XG4gICAgICBleHRzOiBbJ3BkZiddXG4gICAgfSxcbiAgICBbR0VORVJJQ19GSUxFX1RZUEUuUE9XRVJQT0lOVF06IHtcbiAgICAgIGV4dHM6IFsncHB0JywgJ3BwdHgnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLlRFWFRdOiB7XG4gICAgICBleHRzOiBbJ3R4dCddXG4gICAgfSxcbiAgICBbR0VORVJJQ19GSUxFX1RZUEUuVklERU9dOiB7XG4gICAgICBleHRzOiBbJ2FzZicsICdhdmknLCAnZmx2JywgJ21vdicsICdtcDQnLCAnb2d2JywgJ3F0JywgJ3JtJywgJ3JtdmInLCAnd212JywgJzNncCddXG4gICAgfSxcbiAgICBbR0VORVJJQ19GSUxFX1RZUEUuV09SRF06IHtcbiAgICAgIGV4dHM6IFsnZG9jJywgJ2RvY3gnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLkVQTF06IHtcbiAgICAgIGV4dHM6IFsnbW9uJ11cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBmaWxlU2l6ZUxpbWl0Q2ZnID0ge1xuICAgIHN5c3RlbU9wdGlvbjoge1xuICAgICAgY2F0ZWdvcnk6ICdmaWxlcycsXG4gICAgICBrZXk6ICdtYXguc2l6ZSdcbiAgICB9LFxuICAgIGRlZmF1bHRCeXRlc0xpbWl0OiB0aGlzLkRFRkFVTFRfQllURVNfTElNSVQsXG4gICAgYWN0dWFsQnl0ZXNMaW1pdDogdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzeXN0ZW1PcHRpb25zU2VydmljZTogU3lzdGVtT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlCaW5hcnlTZXJ2aWNlOiBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGZpbGVzIGhhdmUgdmFsaWQgc2l6ZS5cbiAgICogQHBhcmFtIGZpbGVzIEZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyB0aGUgY29ycmVjdCBzaXplLlxuICAgKi9cbiAgYXN5bmMgaGF2ZVZhbGlkU2l6ZXMoZmlsZXM6IEZpbGVMaXN0LCBtYXhGaWxlU2l6ZUluQnl0ZXM/OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBsaW1pdCA9IG1pbihbbWF4RmlsZVNpemVJbkJ5dGVzLCBhd2FpdCB0aGlzLmxvYWRCeXRlc1NpemVMaW1pdCgpXSk7XG4gICAgcmV0dXJuIGV2ZXJ5KGZpbGVzLCAoZjogRmlsZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZShmKSA8PSBsaW1pdDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHN5c3RlbSBmaWxlIHNpemUgbGltaXQsIGlmIG5vdCBhdmFpbGFibGUgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICogRGVmYXVsdCBsaW1pdDogW0RFRkFVTFRfQllURVNfTElNSVRde0BsaW5rIERFRkFVTFRfQllURVNfTElNSVR9XG4gICAqIEByZXR1cm5zIFJldHVybnMgcHJvbWlzZSB3aXRoIHRoZSBsaW1pdCB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIGxvYWRCeXRlc1NpemVMaW1pdCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBieXRlc0xpbWl0ID0gdGhpcy5ERUZBVUxUX0JZVEVTX0xJTUlUO1xuICAgIGlmICh0aGlzLmZpbGVTaXplTGltaXRDZmcuYWN0dWFsQnl0ZXNMaW1pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZVNpemVMaW1pdENmZy5hY3R1YWxCeXRlc0xpbWl0O1xuICAgIH1cbiAgICBjb25zdCB7IHN5c3RlbU9wdGlvbiB9ID0gdGhpcy5maWxlU2l6ZUxpbWl0Q2ZnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YTogeyB2YWx1ZTogYWN0dWFsQnl0ZXNMaW1pdCB9XG4gICAgICB9ID0gYXdhaXQgdGhpcy5zeXN0ZW1PcHRpb25zU2VydmljZS5kZXRhaWwoc3lzdGVtT3B0aW9uKTtcblxuICAgICAgaWYgKCFhY3R1YWxCeXRlc0xpbWl0KSB7XG4gICAgICAgIHJldHVybiBieXRlc0xpbWl0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJzZWRBY3R1YWxCeXRlc0xpbWl0ID0gcGFyc2VJbnQoYWN0dWFsQnl0ZXNMaW1pdCwgMTApO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZEFjdHVhbEJ5dGVzTGltaXQpKSB7XG4gICAgICAgIHJldHVybiBieXRlc0xpbWl0O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpbGVTaXplTGltaXRDZmcuYWN0dWFsQnl0ZXNMaW1pdCA9IHBhcnNlZEFjdHVhbEJ5dGVzTGltaXQ7XG4gICAgICBieXRlc0xpbWl0ID0gcGFyc2VkQWN0dWFsQnl0ZXNMaW1pdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXNMaW1pdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHNpemUgb2YgdGhlIGZpbGVcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgUmV0dXJucyBzaXplIG9mIHRoZSBmaWxlIGluIGJ5dGVzLlxuICAgKi9cbiAgc2l6ZShmaWxlOiBGaWxlIHwgSU1hbmFnZWRPYmplY3RCaW5hcnkpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpbGVMZW5ndGggPSBnZXQoZmlsZSwgJ2xlbmd0aCcpIHx8IGdldChmaWxlLCAnc2l6ZScpO1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gZ2V0KGZpbGUsICdfYXR0YWNobWVudHMnKTtcbiAgICBjb25zdCBhdHRhY2htZW50c09iaiA9IGdldChhdHRhY2htZW50cywgZmlyc3Qoa2V5cyhhdHRhY2htZW50cykpKTtcbiAgICByZXR1cm4gaXNVbmRlZmluZWQoZmlsZUxlbmd0aCkgPyBnZXQoYXR0YWNobWVudHNPYmosICdsZW5ndGgnKSA6IGZpbGVMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgZmlsZXMgaGF2ZSBhbGxvd2VkIGV4dGVuc2lvbnMuXG4gICAqIElmIHRoZSBhY2NlcHQgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIGFsbCBleHRlbnNpb25zIGFyZSBhY2NlcHRlZC5cbiAgICogQHBhcmFtIGZpbGVzIEZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gYWNjZXB0IFN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgZmlsZSBleHRlbnNpb25zIGFuZCBnZW5lcmljIHR5cGVzIChbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfSksIGUuZy4gLnppcCwuN3osZXhjZWwuXG4gICAqIEByZXR1cm5zICBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyBhbGxvd2VkIGV4dGVuc2lvbi5cbiAgICovXG4gIGhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXM6IEZpbGVMaXN0IHwgRmlsZSB8IEZpbGVbXSwgYWNjZXB0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWFjY2VwdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSAoZmlsZXMgYXMgRmlsZUxpc3QpLml0ZW1cbiAgICAgID8gQXJyYXkuZnJvbShmaWxlcyBhcyBGaWxlTGlzdClcbiAgICAgIDogQXJyYXkuaXNBcnJheShmaWxlcylcbiAgICAgID8gZmlsZXNcbiAgICAgIDogW2ZpbGVzXTtcblxuICAgIGNvbnN0IGZpbGVzRXh0cyA9IGZpbGVzQXJyYXkubWFwKChmaWxlOiBGaWxlKSA9PiB0aGlzLmdldEZpbGVFeHRlbnNpb24oZmlsZSk/LnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IGFsbG93ZWRFeHRzID0gdGhpcy5leHRyYWN0RmlsZUV4dGVuc2lvbnMoYWNjZXB0KTtcbiAgICByZXR1cm4gZmlsZXNFeHRzLmV2ZXJ5KGV4dCA9PiBhbGxvd2VkRXh0cy5pbmNsdWRlcyhleHQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZWFjaCBmaWxlIGhhcyBhIHZhbGlkIGZpbGVuYW1lIGxlbmd0aC5cbiAgICogQHBhcmFtIGZpbGVzIEZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyBhIHZhbGlkIGZpbGVuYW1lIGxlbmd0aC5cbiAgICovXG4gIGNoZWNrTWF4TGVuZ3RoKGZpbGVzOiBGaWxlTGlzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVyeShmaWxlcywgKGY6IEZpbGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLkZJTEVOQU1FX01BWF9MRU5HVEggPiBmLm5hbWUubGVuZ3RoO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAgICogQHBhcmFtIGZpbGUgRmlsZSBmcm9tIHdoaWNoIHRoZSBleHRlbnNpb24gc2hvdWxkIGJlIGV4dHJhY3RlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgZmlsZSBleHRlbnNpb24gb3IgdW5kZWZpbmVkIGlmIHRoZSBmaWxlIGhhcyBubyBleHRlbnNpb24uXG4gICAqL1xuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGU6IEZpbGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpbGVOYW1lQW5kRmlsZUV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpO1xuICAgIGlmIChmaWxlTmFtZUFuZEZpbGVFeHQubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBubyBmaWxlIGV4dFxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVOYW1lQW5kRmlsZUV4dC5wb3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucy5cbiAgICogQHJldHVybnMgUmV0dXJucyBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucy5cbiAgICovXG4gIGdldEZpbGVFeHRlbnNpb25zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdW5pcShmbGF0dGVuKG1hcCh0aGlzLmZpbGVUeXBlRXh0ZW5zaW9uc01hcCwgKHsgZXh0cyB9KSA9PiBleHRzKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGdlbmVyaWMgZmlsZSB0eXBlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbGlzdCBvZiBnZW5lcmljIGZpbGUgdHlwZXMuXG4gICAqL1xuICBnZXRHZW5lcmljRmlsZVR5cGVzKCk6IEdFTkVSSUNfRklMRV9UWVBFW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZpbGVUeXBlRXh0ZW5zaW9uc01hcCkgYXMgR0VORVJJQ19GSUxFX1RZUEVbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBtYXBHZW5lcmljRmlsZVR5cGVzVG9FeHRlbnNpb25zKGdlbmVyaWNGaWxlVHlwZXM6IEdFTkVSSUNfRklMRV9UWVBFW10gPSBbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWxlRXh0cyA9IGdlbmVyaWNGaWxlVHlwZXMubWFwKGdUID0+IHtcbiAgICAgIGNvbnN0IHsgZXh0cyB9ID0gdGhpcy5maWxlVHlwZUV4dGVuc2lvbnNNYXBbZ1RdO1xuICAgICAgcmV0dXJuIGV4dHM7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5pcShmbGF0dGVuKGZpbGVFeHRzKSk7XG4gIH1cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGEgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgZnJvbSBhIHN0cmluZy5cbiAgICogQ2FuIGFjY2VwdCBnZW5lcmljIGZpbGUgdHlwZXMgY2hlY2s6IFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9LlxuICAgKlxuICAgKiBAcGFyYW0gc3RyIFN0cmluZyBmcm9tIHdoaWNoIHRoZSBmaWxlIGV4dGVuc2lvbnMgYXJlIGV4dHJhY3RlZCAoY29tbWEgc2VwYXJhdGVkIHZhbHVlcykuXG4gICAqIEFjY2VwdGVkIHN0cmluZyBmb3JtYXQ6XG4gICAqICogXCIuemlwLC5pc29cIixcbiAgICogKiBcInppcCxJU09cIixcbiAgICogKiBcImFyY2hpdmVcIi5cbiAgICogSW1wb3J0YW50OiBnZW5lcmljIHR5cGVzIGNhbm5vdCBjb250YWluIGEgZG90LiBBbGwgdmFsdWVzIHdpdGggYSBkb3QgYXJlIHRyZWF0ZWQgYXMgYSBub3JtYWwgZXh0ZW5zaW9uLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZmlsZSBleHRlbnNpb25zLlxuICAgKi9cbiAgZXh0cmFjdEZpbGVFeHRlbnNpb25zKHN0cjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmICghc3RyKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHR5cGVzID0gc3RyLnNwbGl0KCcsJykubWFwKHQgPT4gdC50b0xvd2VyQ2FzZSgpLnRyaW0oKSk7XG5cbiAgICBjb25zdCBnZW5lcmljVHlwZXMgPSB0eXBlcy5maWx0ZXIoKHQ6IHN0cmluZykgPT4gdGhpcy5pc0dlbmVyaWNUeXBlKHQpKTtcbiAgICBjb25zdCBkZWZhdWx0RmlsZUV4dHMgPSB0eXBlcy5maWx0ZXIoKHQ6IHN0cmluZykgPT4gIXRoaXMuaXNHZW5lcmljVHlwZSh0KSk7XG5cbiAgICBjb25zdCBhbGxUeXBlcyA9IFtcbiAgICAgIC4uLnRoaXMubWFwR2VuZXJpY0ZpbGVUeXBlc1RvRXh0ZW5zaW9ucyhnZW5lcmljVHlwZXMgYXMgR0VORVJJQ19GSUxFX1RZUEVbXSksXG4gICAgICAuLi5kZWZhdWx0RmlsZUV4dHNcbiAgICBdLm1hcCh0ID0+IHQucmVwbGFjZSgnLicsICcnKSk7XG5cbiAgICByZXR1cm4gdW5pcShhbGxUeXBlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBmaWxlIHRvIGEgYmFzZTY0IGltYWdlIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gY29udmVydCB0byBiYXNlIDY0LlxuICAgKiBAcmV0dXJucyBUaGUgaW1hZ2Ugc3RyaW5nIGluIGJhc2U2NCBmb3JtYXQuXG4gICAqL1xuICB0b0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoU3RyaW5nKHJlYWRlci5yZXN1bHQpKTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZXJyb3IgPT4gcmVqZWN0KGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZ2V0IGEgRmlsZSByZXByZXNlbnRhdGlvbiBvZiBhbiBtYW5hZ2VkIG9iamVjdCBiaW5hcnkuIENhbiBiZSB1c2VkXG4gICAqIHRvIGNvbnZlcnQgdGhpcyBmaWxlIHRvQmFzZTY0IHRvIHNob3cgaXQgdG8gdGhlIGVuZC11c2VyLlxuICAgKiBAcGFyYW0gYmluYXJ5IFRoZSBiaW5hcnkgbWFuYWdlZCBvYmplY3RcbiAgICogQHJldHVybnMgVGhlIGZpbGUgcmVwcmVzZW50YXRpb24uXG4gICAqL1xuICBhc3luYyBnZXRGaWxlKGJpbmFyeTogSU1hbmFnZWRPYmplY3RCaW5hcnkpOiBQcm9taXNlPEZpbGU+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmludmVudG9yeUJpbmFyeVNlcnZpY2UuZG93bmxvYWQoYmluYXJ5LmlkKTtcbiAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgIHJldHVybiBuZXcgRmlsZShbYXJyYXlCdWZmZXJdLCBiaW5hcnkubmFtZSwgeyB0eXBlOiBiaW5hcnkuY29udGVudFR5cGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHRvIGNhbGN1bGF0ZSB0aGUgaGFzaCBzdW0gb2YgdGhlIHByb3ZpZGVkIGZpbGUuXG4gICAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIHRvIGhhc2guXG4gICAqIEByZXR1cm5zIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIGZpbGUuXG4gICAqL1xuICBhc3luYyBnZXRIYXNoU3VtT2ZGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICBjb25zdCBoYXNoQnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBidWZmZXIpO1xuICAgIGNvbnN0IGhhc2hBcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcikpO1xuICAgIGNvbnN0IGhhc2hIZXggPSBoYXNoQXJyYXkubWFwKGJ5dGVzID0+IGJ5dGVzLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcbiAgICByZXR1cm4gaGFzaEhleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZG93bmxvYWQgYSBmaWxlIChvcGVucyB0aGUgYnJvd3NlciBkb3dubG9hZCBwcm9tcHQpLlxuICAgKiBAcGFyYW0gYmluYXJ5IFRoZSBiaW5hcnkgbWFuYWdlZCBvYmplY3QuXG4gICAqL1xuICBhc3luYyBkb3dubG9hZChiaW5hcnk6IElNYW5hZ2VkT2JqZWN0QmluYXJ5KSB7XG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMuZ2V0RmlsZShiaW5hcnkpO1xuICAgIHNhdmVBcyhmaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgZmlsZSB0byBKYXZhU2NyaXB0IG1lbW9yeS5cbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgcHJvZ3Jlc3Npb24gc3RhdHVzIG9iamVjdCxcbiAgICogYW5kIGFmdGVyIGRvd25sb2FkIGlzIGNvbXBsZXRlZCwgYmxvYiBwcm9wZXJ0eSBpcyBwb3B1bGF0ZWQgd2l0aCBCbG9iIHJlc3VsdCBvYmplY3QuXG4gICAqIFVuc3Vic2NyaWJpbmcgZnJvbSB0aGUgcmV0dXJuZWQgb2JzZXJ2YWJsZSBhYm9ydHMgdGhlIGZpbGUgZmV0Y2ggcmVxdWVzdC5cbiAgICpcbiAgICogQHBhcmFtIGJpbmFyeSBUaGUgYmluYXJ5IG1hbmFnZWQgb2JqZWN0LlxuICAgKi9cbiAgZmV0Y2hGaWxlV2l0aFByb2dyZXNzJChiaW5hcnk6IElNYW5hZ2VkT2JqZWN0QmluYXJ5KTogT2JzZXJ2YWJsZTxJRmV0Y2hXaXRoUHJvZ3Jlc3M+IHtcbiAgICBjb25zdCBwcm9ncmVzczogSUZldGNoV2l0aFByb2dyZXNzID0ge1xuICAgICAgdG90YWxCeXRlczogK2JpbmFyeS5sZW5ndGgsXG4gICAgICBidWZmZXJlZEJ5dGVzOiAwLFxuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIGJ5dGVzUGVyU2Vjb25kOiAwXG4gICAgfTtcblxuICAgIHJldHVybiBvZihuZXcgQWJvcnRDb250cm9sbGVyKCkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgYWJvcnRDb250cm9sbGVyID0+ICh7XG4gICAgICAgIGFib3J0Q29udHJvbGxlcixcbiAgICAgICAgc3RhcnRUaW1lc3RhbXA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgICAgICByZXNwb25zZTogYXdhaXQgdGhpcy5pbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLmRvd25sb2FkKGJpbmFyeS5pZCwge1xuICAgICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbFxuICAgICAgICB9KVxuICAgICAgfSkpLFxuICAgICAgc3dpdGNoTWFwKCh7IHJlc3BvbnNlLCBhYm9ydENvbnRyb2xsZXIsIHN0YXJ0VGltZXN0YW1wIH0pID0+XG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3BvbnNlJChhYm9ydENvbnRyb2xsZXIsIHJlc3BvbnNlLCBzdGFydFRpbWVzdGFtcCwgcHJvZ3Jlc3MsIGJpbmFyeS50eXBlKVxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChwcm9ncmVzcyksXG4gICAgICBzaGFyZSgpLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gdGhyb3dFcnJvcihlcnIpKVxuICAgICk7XG4gIH1cblxuICB1cGxvYWRGaWxlV2l0aFByb2dyZXNzJChmaWxlOiBTdHJlYW0gfCBCdWZmZXIgfCBGaWxlIHwgQmxvYik6IE9ic2VydmFibGU8SUZldGNoV2l0aFByb2dyZXNzPiB7XG4gICAgY29uc3QgdXBsb2FkU3RhcnRUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmV0Y2hXaXRoUHJvZ3Jlc3M+KHtcbiAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICB0b3RhbEJ5dGVzOiBudWxsLFxuICAgICAgYnVmZmVyZWRCeXRlczogMCxcbiAgICAgIGJ5dGVzUGVyU2Vjb25kOiAwXG4gICAgfSk7XG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc3QgZXZlbnRUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gZXZlbnRUaW1lc3RhbXAgLSB1cGxvYWRTdGFydFRpbWVzdGFtcDtcbiAgICAgIHN1YmplY3QubmV4dCh7XG4gICAgICAgIHBlcmNlbnRhZ2U6IE1hdGgucm91bmQoKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqIDEwMCksXG4gICAgICAgIHRvdGFsQnl0ZXM6IGV2ZW50LnRvdGFsLFxuICAgICAgICBidWZmZXJlZEJ5dGVzOiBldmVudC5sb2FkZWQsXG4gICAgICAgIGJ5dGVzUGVyU2Vjb25kOiBNYXRoLnJvdW5kKGV2ZW50LmxvYWRlZCAvIE1hdGgucm91bmQoZHVyYXRpb24gLyAxMDAwKSlcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCB4aHIgPSB0aGlzLmludmVudG9yeUJpbmFyeVNlcnZpY2UuY3JlYXRlV2l0aFByb2dyZXNzKGZpbGUsIG9uUHJvZ3Jlc3MpO1xuICAgIGNvbnN0IHVwbG9hZFByb21pc2UgPSB0aGlzLmludmVudG9yeUJpbmFyeVNlcnZpY2UuZ2V0WE1MSHR0cFJlc3BvbnNlKHhocik7XG4gICAgdXBsb2FkUHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUmVzcG9uc2UkKFxuICAgIGFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyLFxuICAgIHJlc3BvbnNlOiBJRmV0Y2hSZXNwb25zZSxcbiAgICBzdGFydFRpbWVzdGFtcDogbnVtYmVyLFxuICAgIHByb2dyZXNzOiBJRmV0Y2hXaXRoUHJvZ3Jlc3MsXG4gICAgYmluYXJ5VHlwZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8SUZldGNoV2l0aFByb2dyZXNzPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YiA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpO1xuICAgICAgY29uc3QgY2h1bmtzID0gW107XG5cbiAgICAgIGNvbnN0IHJlYWRTdHJlYW0gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG5cbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgIHByb2dyZXNzLmJsb2IgPSBuZXcgQmxvYihjaHVua3MsIHsgdHlwZTogYmluYXJ5VHlwZSB9KTtcbiAgICAgICAgICAgICAgc3ViLm5leHQoeyAuLi5wcm9ncmVzcyB9KTtcbiAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaHVua3MucHVzaCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIHByb2dyZXNzLmJ1ZmZlcmVkQnl0ZXMgKz0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wRGlmZiA9IGN1cnJlbnRUaW1lc3RhbXAgLSBzdGFydFRpbWVzdGFtcDtcbiAgICAgICAgICAgIHByb2dyZXNzLmJ5dGVzUGVyU2Vjb25kID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgcHJvZ3Jlc3MuYnVmZmVyZWRCeXRlcyAvIE1hdGgucm91bmQodGltZXN0YW1wRGlmZiAvIDEwMDApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcHJvZ3Jlc3MucGVyY2VudGFnZSA9IE1hdGgucm91bmQoKHByb2dyZXNzLmJ1ZmZlcmVkQnl0ZXMgLyBwcm9ncmVzcy50b3RhbEJ5dGVzKSAqIDEwMCk7XG4gICAgICAgICAgICBzdWIubmV4dCh7IC4uLnByb2dyZXNzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgICAgIHN1Yi5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJlYWRTdHJlYW0oKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzR2VuZXJpY1R5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoR0VORVJJQ19GSUxFX1RZUEUpLmluY2x1ZGVzKHR5cGUgYXMgR0VORVJJQ19GSUxFX1RZUEUpO1xuICB9XG59XG4iXX0=
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2ZpbGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNyQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVd6RSxNQUFNLENBQU4sSUFBWSxpQkFZWDtBQVpELFdBQVksaUJBQWlCO0lBQzNCLHdDQUFtQixDQUFBO0lBQ25CLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0lBQ2Isb0NBQWUsQ0FBQTtJQUNmLG9DQUFlLENBQUE7SUFDZixnQ0FBVyxDQUFBO0lBQ1gsOENBQXlCLENBQUE7SUFDekIsa0NBQWEsQ0FBQTtJQUNiLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0lBQ2IsZ0NBQVcsQ0FBQTtBQUNiLENBQUMsRUFaVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBWTVCO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFpRHZCLFlBQ1Usb0JBQTBDLEVBQzFDLHNCQUE4QztRQUQ5Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FB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QUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVk7UUFDaEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQXlCLENBQUMsQ0FBQztJQUM5RSxDQUFDOzt5R0E1WVUsWUFBWTs2R0FBWixZQUFZLGNBREMsTUFBTTsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJRmV0Y2hSZXNwb25zZSxcbiAgSU1hbmFnZWRPYmplY3RCaW5hcnksXG4gIEludmVudG9yeUJpbmFyeVNlcnZpY2UsXG4gIFN5c3RlbU9wdGlvbnNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGV2ZXJ5LCBmaXJzdCwgZmxhdHRlbiwgZ2V0LCBpc05hTiwgaXNVbmRlZmluZWQsIGtleXMsIG1hcCwgdW5pcSwgbWluIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCBzdGFydFdpdGgsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RyZWFtIH0gZnJvbSAnc3RyZWFtJztcblxuZXhwb3J0IGludGVyZmFjZSBJRmV0Y2hXaXRoUHJvZ3Jlc3Mge1xuICB0b3RhbEJ5dGVzOiBudW1iZXI7XG4gIGJ1ZmZlcmVkQnl0ZXM6IG51bWJlcjtcbiAgcGVyY2VudGFnZTogbnVtYmVyO1xuICBieXRlc1BlclNlY29uZDogbnVtYmVyO1xuICBibG9iPzogQmxvYjtcbn1cblxuZXhwb3J0IGVudW0gR0VORVJJQ19GSUxFX1RZUEUge1xuICBBUkNISVZFID0gJ2FyY2hpdmUnLFxuICBBVURJTyA9ICdhdWRpbycsXG4gIENPREUgPSAnY29kZScsXG4gIEVYQ0VMID0gJ2V4Y2VsJyxcbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBQREYgPSAncGRmJyxcbiAgUE9XRVJQT0lOVCA9ICdwb3dlcnBvaW50JyxcbiAgVEVYVCA9ICd0ZXh0JyxcbiAgVklERU8gPSAndmlkZW8nLFxuICBXT1JEID0gJ3dvcmQnLFxuICBFUEwgPSAnZXBsJ1xufVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGaWxlc1NlcnZpY2Uge1xuICByZWFkb25seSBERUZBVUxUX0JZVEVTX0xJTUlUID0gNTI0Mjg4MDA7XG4gIHJlYWRvbmx5IEZJTEVOQU1FX01BWF9MRU5HVEggPSAxMjg7XG5cbiAgZmlsZVR5cGVFeHRlbnNpb25zTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgZXh0czogc3RyaW5nW10gfSB9ID0ge1xuICAgIFtHRU5FUklDX0ZJTEVfVFlQRS5BUkNISVZFXToge1xuICAgICAgZXh0czogWyc3eicsICdhcGsnLCAnY2FiJywgJ2d6JywgJ2lzbycsICdqYXInLCAncmFyJywgJ3RhcicsICd6aXAnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLkFVRElPXToge1xuICAgICAgZXh0czogWyczZ3AnLCAnYWlmZicsICdhYWMnLCAnYW1yJywgJ200YScsICdtNHAnLCAnbXAzJywgJ29nYScsICdvZ2cnLCAncmF3JywgJ3dhdicsICd3bWEnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLkNPREVdOiB7XG4gICAgICBleHRzOiBbJ2FzcHgnLCAnZXhlJywgJ2h0bScsICdodG1sJywgJ2phZCcsICdqcycsICdqc29uJywgJ2pzcCcsICdwaHAnLCAneG1sJ11cbiAgICB9LFxuICAgIFtHRU5FUklDX0ZJTEVfVFlQRS5FWENFTF06IHtcbiAgICAgIGV4dHM6IFsneGxzJywgJ3hsc3gnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLklNQUdFXToge1xuICAgICAgZXh0czogWydibXAnLCAnZ2lmJywgJ2pwZWcnLCAnanBnJywgJ3BuZycsICd0aWZmJywgJ3N2ZycsICdpY28nLCAnYXBuZycsICd3ZWJwJ11cbiAgICB9LFxuICAgIFtHRU5FUklDX0ZJTEVfVFlQRS5QREZdOiB7XG4gICAgICBleHRzOiBbJ3BkZiddXG4gICAgfSxcbiAgICBbR0VORVJJQ19GSUxFX1RZUEUuUE9XRVJQT0lOVF06IHtcbiAgICAgIGV4dHM6IFsncHB0JywgJ3BwdHgnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLlRFWFRdOiB7XG4gICAgICBleHRzOiBbJ3R4dCddXG4gICAgfSxcbiAgICBbR0VORVJJQ19GSUxFX1RZUEUuVklERU9dOiB7XG4gICAgICBleHRzOiBbJ2FzZicsICdhdmknLCAnZmx2JywgJ21vdicsICdtcDQnLCAnb2d2JywgJ3F0JywgJ3JtJywgJ3JtdmInLCAnd212JywgJzNncCddXG4gICAgfSxcbiAgICBbR0VORVJJQ19GSUxFX1RZUEUuV09SRF06IHtcbiAgICAgIGV4dHM6IFsnZG9jJywgJ2RvY3gnXVxuICAgIH0sXG4gICAgW0dFTkVSSUNfRklMRV9UWVBFLkVQTF06IHtcbiAgICAgIGV4dHM6IFsnbW9uJ11cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBmaWxlU2l6ZUxpbWl0Q2ZnID0ge1xuICAgIHN5c3RlbU9wdGlvbjoge1xuICAgICAgY2F0ZWdvcnk6ICdmaWxlcycsXG4gICAgICBrZXk6ICdtYXguc2l6ZSdcbiAgICB9LFxuICAgIGRlZmF1bHRCeXRlc0xpbWl0OiB0aGlzLkRFRkFVTFRfQllURVNfTElNSVQsXG4gICAgYWN0dWFsQnl0ZXNMaW1pdDogdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzeXN0ZW1PcHRpb25zU2VydmljZTogU3lzdGVtT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlCaW5hcnlTZXJ2aWNlOiBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGZpbGVzIGhhdmUgdmFsaWQgc2l6ZS5cbiAgICogQHBhcmFtIGZpbGVzIEZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyB0aGUgY29ycmVjdCBzaXplLlxuICAgKi9cbiAgYXN5bmMgaGF2ZVZhbGlkU2l6ZXMoZmlsZXM6IEZpbGVMaXN0LCBtYXhGaWxlU2l6ZUluQnl0ZXM/OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBsaW1pdCA9IG1pbihbbWF4RmlsZVNpemVJbkJ5dGVzLCBhd2FpdCB0aGlzLmxvYWRCeXRlc1NpemVMaW1pdCgpXSk7XG4gICAgcmV0dXJuIGV2ZXJ5KGZpbGVzLCAoZjogRmlsZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZShmKSA8PSBsaW1pdDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHN5c3RlbSBmaWxlIHNpemUgbGltaXQsIGlmIG5vdCBhdmFpbGFibGUgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICogRGVmYXVsdCBsaW1pdDogW0RFRkFVTFRfQllURVNfTElNSVRde0BsaW5rIERFRkFVTFRfQllURVNfTElNSVR9XG4gICAqIEByZXR1cm5zIFJldHVybnMgcHJvbWlzZSB3aXRoIHRoZSBsaW1pdCB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIGxvYWRCeXRlc1NpemVMaW1pdCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBieXRlc0xpbWl0ID0gdGhpcy5ERUZBVUxUX0JZVEVTX0xJTUlUO1xuICAgIGlmICh0aGlzLmZpbGVTaXplTGltaXRDZmcuYWN0dWFsQnl0ZXNMaW1pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZVNpemVMaW1pdENmZy5hY3R1YWxCeXRlc0xpbWl0O1xuICAgIH1cbiAgICBjb25zdCB7IHN5c3RlbU9wdGlvbiB9ID0gdGhpcy5maWxlU2l6ZUxpbWl0Q2ZnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YTogeyB2YWx1ZTogYWN0dWFsQnl0ZXNMaW1pdCB9XG4gICAgICB9ID0gYXdhaXQgdGhpcy5zeXN0ZW1PcHRpb25zU2VydmljZS5kZXRhaWwoc3lzdGVtT3B0aW9uKTtcblxuICAgICAgaWYgKCFhY3R1YWxCeXRlc0xpbWl0KSB7XG4gICAgICAgIHJldHVybiBieXRlc0xpbWl0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJzZWRBY3R1YWxCeXRlc0xpbWl0ID0gcGFyc2VJbnQoYWN0dWFsQnl0ZXNMaW1pdCwgMTApO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZEFjdHVhbEJ5dGVzTGltaXQpKSB7XG4gICAgICAgIHJldHVybiBieXRlc0xpbWl0O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpbGVTaXplTGltaXRDZmcuYWN0dWFsQnl0ZXNMaW1pdCA9IHBhcnNlZEFjdHVhbEJ5dGVzTGltaXQ7XG4gICAgICBieXRlc0xpbWl0ID0gcGFyc2VkQWN0dWFsQnl0ZXNMaW1pdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXNMaW1pdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIHNpemUgb2YgdGhlIGZpbGVcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgUmV0dXJucyBzaXplIG9mIHRoZSBmaWxlIGluIGJ5dGVzLlxuICAgKi9cbiAgc2l6ZShmaWxlOiBGaWxlIHwgSU1hbmFnZWRPYmplY3RCaW5hcnkpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpbGVMZW5ndGggPSBnZXQoZmlsZSwgJ2xlbmd0aCcpIHx8IGdldChmaWxlLCAnc2l6ZScpO1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gZ2V0KGZpbGUsICdfYXR0YWNobWVudHMnKTtcbiAgICBjb25zdCBhdHRhY2htZW50c09iaiA9IGdldChhdHRhY2htZW50cywgZmlyc3Qoa2V5cyhhdHRhY2htZW50cykpKTtcbiAgICByZXR1cm4gaXNVbmRlZmluZWQoZmlsZUxlbmd0aCkgPyBnZXQoYXR0YWNobWVudHNPYmosICdsZW5ndGgnKSA6IGZpbGVMZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgZmlsZXMgaGF2ZSBhbGxvd2VkIGV4dGVuc2lvbnMuXG4gICAqIElmIHRoZSBhY2NlcHQgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIGFsbCBleHRlbnNpb25zIGFyZSBhY2NlcHRlZC5cbiAgICogQHBhcmFtIGZpbGVzIEZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gYWNjZXB0IFN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgZmlsZSBleHRlbnNpb25zIGFuZCBnZW5lcmljIHR5cGVzIChbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfSksIGUuZy4gLnppcCwuN3osZXhjZWwuXG4gICAqIEByZXR1cm5zICBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyBhbGxvd2VkIGV4dGVuc2lvbi5cbiAgICovXG4gIGhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXM6IEZpbGVMaXN0IHwgRmlsZSB8IEZpbGVbXSwgYWNjZXB0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWFjY2VwdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSAoZmlsZXMgYXMgRmlsZUxpc3QpLml0ZW1cbiAgICAgID8gQXJyYXkuZnJvbShmaWxlcyBhcyBGaWxlTGlzdClcbiAgICAgIDogQXJyYXkuaXNBcnJheShmaWxlcylcbiAgICAgICAgPyBmaWxlc1xuICAgICAgICA6IFtmaWxlc107XG5cbiAgICBjb25zdCBmaWxlc0V4dHMgPSBmaWxlc0FycmF5Lm1hcCgoZmlsZTogRmlsZSkgPT4gdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKGZpbGUpPy50b0xvd2VyQ2FzZSgpKTtcbiAgICBjb25zdCBhbGxvd2VkRXh0cyA9IHRoaXMuZXh0cmFjdEZpbGVFeHRlbnNpb25zKGFjY2VwdCk7XG4gICAgcmV0dXJuIGZpbGVzRXh0cy5ldmVyeShleHQgPT4gYWxsb3dlZEV4dHMuaW5jbHVkZXMoZXh0KSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGZpbGUgbmFtZXMgaGF2ZSBhbGxvd2VkIGV4dGVuc2lvbi5cbiAgICogSWYgdGhlIGFjY2VwdCBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgYWxsIGV4dGVuc2lvbnMgYXJlIGFjY2VwdGVkLlxuICAgKiBAcGFyYW0gZmlsZU5hbWVzIFRoZSBmaWxlIG5hbWVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gYWNjZXB0IFN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgZmlsZSBleHRlbnNpb25zIGFuZCBnZW5lcmljIHR5cGVzIChbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfSksIGUuZy4gLnppcCwuN3osZXhjZWwuXG4gICAqIEByZXR1cm5zICBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyBhbGxvd2VkIGV4dGVuc2lvbi5cbiAgICovXG4gIGZpbGVOYW1lc0hhdmVWYWxpZEV4dGVuc2lvbihmaWxlTmFtZXM6IHN0cmluZyB8IHN0cmluZ1tdLCBhY2NlcHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYWNjZXB0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZmlsZU5hbWVzID0gQXJyYXkuaXNBcnJheShmaWxlTmFtZXMpID8gZmlsZU5hbWVzIDogW2ZpbGVOYW1lc107XG4gICAgY29uc3QgZmlsZXNFeHRzID0gZmlsZU5hbWVzLm1hcCgoZmlsZTogc3RyaW5nKSA9PiB0aGlzLmdldEZpbGVFeHRlbnNpb24oZmlsZSk/LnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IGFsbG93ZWRFeHRzID0gdGhpcy5leHRyYWN0RmlsZUV4dGVuc2lvbnMoYWNjZXB0KTtcbiAgICByZXR1cm4gZmlsZXNFeHRzLmV2ZXJ5KGV4dCA9PiBhbGxvd2VkRXh0cy5pbmNsdWRlcyhleHQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZWFjaCBmaWxlIGhhcyBhIHZhbGlkIGZpbGVuYW1lIGxlbmd0aC5cbiAgICogQHBhcmFtIGZpbGVzIEZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZWFjaCBmaWxlIGhhcyBhIHZhbGlkIGZpbGVuYW1lIGxlbmd0aC5cbiAgICovXG4gIGNoZWNrTWF4TGVuZ3RoKGZpbGVzOiBGaWxlTGlzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVyeShmaWxlcywgKGY6IEZpbGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLkZJTEVOQU1FX01BWF9MRU5HVEggPiBmLm5hbWUubGVuZ3RoO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAgICogQHBhcmFtIGZpbGVPckZpbGVOYW1lIEZpbGUgb3IgbmFtZSBvZiBmaWxlIGZyb20gd2hpY2ggdGhlIGV4dGVuc2lvbiBzaG91bGQgYmUgZXh0cmFjdGVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBmaWxlIGV4dGVuc2lvbiBvciB1bmRlZmluZWQgaWYgdGhlIGZpbGUgaGFzIG5vIGV4dGVuc2lvbi5cbiAgICovXG4gIGdldEZpbGVFeHRlbnNpb24oZmlsZU9yRmlsZU5hbWU6IEZpbGUgfCBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpbGVOYW1lQW5kRmlsZUV4dCA9IChcbiAgICAgIHR5cGVvZiBmaWxlT3JGaWxlTmFtZSA9PT0gJ3N0cmluZycgPyBmaWxlT3JGaWxlTmFtZSA6IGZpbGVPckZpbGVOYW1lLm5hbWVcbiAgICApLnNwbGl0KCcuJyk7XG4gICAgaWYgKGZpbGVOYW1lQW5kRmlsZUV4dC5sZW5ndGggPT09IDEpIHtcbiAgICAgIC8vIG5vIGZpbGUgZXh0XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZU5hbWVBbmRGaWxlRXh0LnBvcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZmlsZSBleHRlbnNpb25zLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zLlxuICAgKi9cbiAgZ2V0RmlsZUV4dGVuc2lvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB1bmlxKGZsYXR0ZW4obWFwKHRoaXMuZmlsZVR5cGVFeHRlbnNpb25zTWFwLCAoeyBleHRzIH0pID0+IGV4dHMpKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgZ2VuZXJpYyBmaWxlIHR5cGVzLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBsaXN0IG9mIGdlbmVyaWMgZmlsZSB0eXBlcy5cbiAgICovXG4gIGdldEdlbmVyaWNGaWxlVHlwZXMoKTogR0VORVJJQ19GSUxFX1RZUEVbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmlsZVR5cGVFeHRlbnNpb25zTWFwKSBhcyBHRU5FUklDX0ZJTEVfVFlQRVtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG1hcEdlbmVyaWNGaWxlVHlwZXNUb0V4dGVuc2lvbnMoZ2VuZXJpY0ZpbGVUeXBlczogR0VORVJJQ19GSUxFX1RZUEVbXSA9IFtdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpbGVFeHRzID0gZ2VuZXJpY0ZpbGVUeXBlcy5tYXAoZ1QgPT4ge1xuICAgICAgY29uc3QgeyBleHRzIH0gPSB0aGlzLmZpbGVUeXBlRXh0ZW5zaW9uc01hcFtnVF07XG4gICAgICByZXR1cm4gZXh0cztcbiAgICB9KTtcblxuICAgIHJldHVybiB1bmlxKGZsYXR0ZW4oZmlsZUV4dHMpKTtcbiAgfVxuICAvKipcbiAgICogRXh0cmFjdHMgYSBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyBmcm9tIGEgc3RyaW5nLlxuICAgKiBDYW4gYWNjZXB0IGdlbmVyaWMgZmlsZSB0eXBlcyBjaGVjazogW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX0uXG4gICAqXG4gICAqIEBwYXJhbSBzdHIgU3RyaW5nIGZyb20gd2hpY2ggdGhlIGZpbGUgZXh0ZW5zaW9ucyBhcmUgZXh0cmFjdGVkIChjb21tYSBzZXBhcmF0ZWQgdmFsdWVzKS5cbiAgICogQWNjZXB0ZWQgc3RyaW5nIGZvcm1hdDpcbiAgICogKiBcIi56aXAsLmlzb1wiLFxuICAgKiAqIFwiemlwLElTT1wiLFxuICAgKiAqIFwiYXJjaGl2ZVwiLlxuICAgKiBJbXBvcnRhbnQ6IGdlbmVyaWMgdHlwZXMgY2Fubm90IGNvbnRhaW4gYSBkb3QuIEFsbCB2YWx1ZXMgd2l0aCBhIGRvdCBhcmUgdHJlYXRlZCBhcyBhIG5vcm1hbCBleHRlbnNpb24uXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBsaXN0IG9mIHRoZSBmaWxlIGV4dGVuc2lvbnMuXG4gICAqL1xuICBleHRyYWN0RmlsZUV4dGVuc2lvbnMoc3RyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFzdHIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgdHlwZXMgPSBzdHIuc3BsaXQoJywnKS5tYXAodCA9PiB0LnRvTG93ZXJDYXNlKCkudHJpbSgpKTtcblxuICAgIGNvbnN0IGdlbmVyaWNUeXBlcyA9IHR5cGVzLmZpbHRlcigodDogc3RyaW5nKSA9PiB0aGlzLmlzR2VuZXJpY1R5cGUodCkpO1xuICAgIGNvbnN0IGRlZmF1bHRGaWxlRXh0cyA9IHR5cGVzLmZpbHRlcigodDogc3RyaW5nKSA9PiAhdGhpcy5pc0dlbmVyaWNUeXBlKHQpKTtcblxuICAgIGNvbnN0IGFsbFR5cGVzID0gW1xuICAgICAgLi4udGhpcy5tYXBHZW5lcmljRmlsZVR5cGVzVG9FeHRlbnNpb25zKGdlbmVyaWNUeXBlcyBhcyBHRU5FUklDX0ZJTEVfVFlQRVtdKSxcbiAgICAgIC4uLmRlZmF1bHRGaWxlRXh0c1xuICAgIF0ubWFwKHQgPT4gdC5yZXBsYWNlKCcuJywgJycpKTtcblxuICAgIHJldHVybiB1bmlxKGFsbFR5cGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZpbGUgdG8gYSBiYXNlNjQgaW1hZ2Ugc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBjb252ZXJ0IHRvIGJhc2UgNjQuXG4gICAqIEByZXR1cm5zIFRoZSBpbWFnZSBzdHJpbmcgaW4gYmFzZTY0IGZvcm1hdC5cbiAgICovXG4gIHRvQmFzZTY0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShTdHJpbmcocmVhZGVyLnJlc3VsdCkpO1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBnZXQgYSBGaWxlIHJlcHJlc2VudGF0aW9uIG9mIGFuIG1hbmFnZWQgb2JqZWN0IGJpbmFyeS4gQ2FuIGJlIHVzZWRcbiAgICogdG8gY29udmVydCB0aGlzIGZpbGUgdG9CYXNlNjQgdG8gc2hvdyBpdCB0byB0aGUgZW5kLXVzZXIuXG4gICAqIEBwYXJhbSBiaW5hcnkgVGhlIGJpbmFyeSBtYW5hZ2VkIG9iamVjdFxuICAgKiBAcmV0dXJucyBUaGUgZmlsZSByZXByZXNlbnRhdGlvbi5cbiAgICovXG4gIGFzeW5jIGdldEZpbGUoYmluYXJ5OiBJTWFuYWdlZE9iamVjdEJpbmFyeSk6IFByb21pc2U8RmlsZT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuaW52ZW50b3J5QmluYXJ5U2VydmljZS5kb3dubG9hZChiaW5hcnkuaWQpO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgcmVzLmFycmF5QnVmZmVyKCk7XG4gICAgcmV0dXJuIG5ldyBGaWxlKFthcnJheUJ1ZmZlcl0sIGJpbmFyeS5uYW1lLCB7IHR5cGU6IGJpbmFyeS5jb250ZW50VHlwZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gY2FsY3VsYXRlIHRoZSBoYXNoIHN1bSBvZiB0aGUgcHJvdmlkZWQgZmlsZS5cbiAgICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gaGFzaC5cbiAgICogQHJldHVybnMgVGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIGFzeW5jIGdldEhhc2hTdW1PZkZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpO1xuICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGJ1ZmZlcik7XG4gICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgY29uc3QgaGFzaEhleCA9IGhhc2hBcnJheS5tYXAoYnl0ZXMgPT4gYnl0ZXMudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpO1xuICAgIHJldHVybiBoYXNoSGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBkb3dubG9hZCBhIGZpbGUgKG9wZW5zIHRoZSBicm93c2VyIGRvd25sb2FkIHByb21wdCkuXG4gICAqIEBwYXJhbSBiaW5hcnkgVGhlIGJpbmFyeSBtYW5hZ2VkIG9iamVjdC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKGJpbmFyeTogSU1hbmFnZWRPYmplY3RCaW5hcnkpIHtcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgdGhpcy5nZXRGaWxlKGJpbmFyeSk7XG4gICAgc2F2ZUFzKGZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBmaWxlIHRvIEphdmFTY3JpcHQgbWVtb3J5LlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBwcm9ncmVzc2lvbiBzdGF0dXMgb2JqZWN0LFxuICAgKiBhbmQgYWZ0ZXIgZG93bmxvYWQgaXMgY29tcGxldGVkLCBibG9iIHByb3BlcnR5IGlzIHBvcHVsYXRlZCB3aXRoIEJsb2IgcmVzdWx0IG9iamVjdC5cbiAgICogVW5zdWJzY3JpYmluZyBmcm9tIHRoZSByZXR1cm5lZCBvYnNlcnZhYmxlIGFib3J0cyB0aGUgZmlsZSBmZXRjaCByZXF1ZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gYmluYXJ5IFRoZSBiaW5hcnkgbWFuYWdlZCBvYmplY3QuXG4gICAqL1xuICBmZXRjaEZpbGVXaXRoUHJvZ3Jlc3MkKGJpbmFyeTogSU1hbmFnZWRPYmplY3RCaW5hcnkpOiBPYnNlcnZhYmxlPElGZXRjaFdpdGhQcm9ncmVzcz4ge1xuICAgIGNvbnN0IHByb2dyZXNzOiBJRmV0Y2hXaXRoUHJvZ3Jlc3MgPSB7XG4gICAgICB0b3RhbEJ5dGVzOiArYmluYXJ5Lmxlbmd0aCxcbiAgICAgIGJ1ZmZlcmVkQnl0ZXM6IDAsXG4gICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgYnl0ZXNQZXJTZWNvbmQ6IDBcbiAgICB9O1xuXG4gICAgcmV0dXJuIG9mKG5ldyBBYm9ydENvbnRyb2xsZXIoKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcChhc3luYyBhYm9ydENvbnRyb2xsZXIgPT4gKHtcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLFxuICAgICAgICBzdGFydFRpbWVzdGFtcDogbmV3IERhdGUoKS5nZXRUaW1lKCksXG4gICAgICAgIHJlc3BvbnNlOiBhd2FpdCB0aGlzLmludmVudG9yeUJpbmFyeVNlcnZpY2UuZG93bmxvYWQoYmluYXJ5LmlkLCB7XG4gICAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsXG4gICAgICAgIH0pXG4gICAgICB9KSksXG4gICAgICBzd2l0Y2hNYXAoKHsgcmVzcG9uc2UsIGFib3J0Q29udHJvbGxlciwgc3RhcnRUaW1lc3RhbXAgfSkgPT5cbiAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UkKGFib3J0Q29udHJvbGxlciwgcmVzcG9uc2UsIHN0YXJ0VGltZXN0YW1wLCBwcm9ncmVzcywgYmluYXJ5LnR5cGUpXG4gICAgICApLFxuICAgICAgc3RhcnRXaXRoKHByb2dyZXNzKSxcbiAgICAgIHNoYXJlKCksXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB0aHJvd0Vycm9yKGVycikpXG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZEZpbGVXaXRoUHJvZ3Jlc3MkKGZpbGU6IFN0cmVhbSB8IEJ1ZmZlciB8IEZpbGUgfCBCbG9iKTogT2JzZXJ2YWJsZTxJRmV0Y2hXaXRoUHJvZ3Jlc3M+IHtcbiAgICBjb25zdCB1cGxvYWRTdGFydFRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGZXRjaFdpdGhQcm9ncmVzcz4oe1xuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIHRvdGFsQnl0ZXM6IG51bGwsXG4gICAgICBidWZmZXJlZEJ5dGVzOiAwLFxuICAgICAgYnl0ZXNQZXJTZWNvbmQ6IDBcbiAgICB9KTtcbiAgICBjb25zdCBvblByb2dyZXNzID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCBldmVudFRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBldmVudFRpbWVzdGFtcCAtIHVwbG9hZFN0YXJ0VGltZXN0YW1wO1xuICAgICAgc3ViamVjdC5uZXh0KHtcbiAgICAgICAgcGVyY2VudGFnZTogTWF0aC5yb3VuZCgoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwKSxcbiAgICAgICAgdG90YWxCeXRlczogZXZlbnQudG90YWwsXG4gICAgICAgIGJ1ZmZlcmVkQnl0ZXM6IGV2ZW50LmxvYWRlZCxcbiAgICAgICAgYnl0ZXNQZXJTZWNvbmQ6IE1hdGgucm91bmQoZXZlbnQubG9hZGVkIC8gTWF0aC5yb3VuZChkdXJhdGlvbiAvIDEwMDApKVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHhociA9IHRoaXMuaW52ZW50b3J5QmluYXJ5U2VydmljZS5jcmVhdGVXaXRoUHJvZ3Jlc3MoZmlsZSwgb25Qcm9ncmVzcyk7XG4gICAgY29uc3QgdXBsb2FkUHJvbWlzZSA9IHRoaXMuaW52ZW50b3J5QmluYXJ5U2VydmljZS5nZXRYTUxIdHRwUmVzcG9uc2UoeGhyKTtcbiAgICB1cGxvYWRQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NSZXNwb25zZSQoXG4gICAgYWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIsXG4gICAgcmVzcG9uc2U6IElGZXRjaFJlc3BvbnNlLFxuICAgIHN0YXJ0VGltZXN0YW1wOiBudW1iZXIsXG4gICAgcHJvZ3Jlc3M6IElGZXRjaFdpdGhQcm9ncmVzcyxcbiAgICBiaW5hcnlUeXBlOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxJRmV0Y2hXaXRoUHJvZ3Jlc3M+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3ViID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHkuZ2V0UmVhZGVyKCk7XG4gICAgICBjb25zdCBjaHVua3MgPSBbXTtcblxuICAgICAgY29uc3QgcmVhZFN0cmVhbSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcblxuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgcHJvZ3Jlc3MuYmxvYiA9IG5ldyBCbG9iKGNodW5rcywgeyB0eXBlOiBiaW5hcnlUeXBlIH0pO1xuICAgICAgICAgICAgICBzdWIubmV4dCh7IC4uLnByb2dyZXNzIH0pO1xuICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNodW5rcy5wdXNoKHZhbHVlKTtcblxuICAgICAgICAgICAgcHJvZ3Jlc3MuYnVmZmVyZWRCeXRlcyArPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXBEaWZmID0gY3VycmVudFRpbWVzdGFtcCAtIHN0YXJ0VGltZXN0YW1wO1xuICAgICAgICAgICAgcHJvZ3Jlc3MuYnl0ZXNQZXJTZWNvbmQgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICBwcm9ncmVzcy5idWZmZXJlZEJ5dGVzIC8gTWF0aC5yb3VuZCh0aW1lc3RhbXBEaWZmIC8gMTAwMClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBwcm9ncmVzcy5wZXJjZW50YWdlID0gTWF0aC5yb3VuZCgocHJvZ3Jlc3MuYnVmZmVyZWRCeXRlcyAvIHByb2dyZXNzLnRvdGFsQnl0ZXMpICogMTAwKTtcbiAgICAgICAgICAgIHN1Yi5uZXh0KHsgLi4ucHJvZ3Jlc3MgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgICAgc3ViLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmVhZFN0cmVhbSgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bnN1YnNjcmliZSgpIHtcbiAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNHZW5lcmljVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhHRU5FUklDX0ZJTEVfVFlQRSkuaW5jbHVkZXModHlwZSBhcyBHRU5FUklDX0ZJTEVfVFlQRSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,7 +8,12 @@ export class GlobalConfigService {
|
|
|
8
8
|
this.fragmentTypeMapping = {
|
|
9
9
|
c8y_Software: 'c8y_SoftwareAsGlobal',
|
|
10
10
|
c8y_Firmware: 'c8y_FirmwareAsGlobal',
|
|
11
|
-
c8y_ConfigurationDump: 'c8y_ConfigurationAsGlobal'
|
|
11
|
+
c8y_ConfigurationDump: 'c8y_ConfigurationAsGlobal',
|
|
12
|
+
c8y_DeviceShellTemplate: 'c8y_ShellTemplateAsGlobal',
|
|
13
|
+
c8y_ModbusDeviceType: 'c8y_FieldbusAsGlobal',
|
|
14
|
+
c8y_CANopenDeviceType: 'c8y_CANOpenAsGlobal',
|
|
15
|
+
c8y_LoraDeviceType: 'c8y_LoraAsGlobal',
|
|
16
|
+
c8y_SigfoxDeviceType: 'c8y_SigfoxAsGlobal'
|
|
12
17
|
};
|
|
13
18
|
this.cache = undefined;
|
|
14
19
|
}
|
|
@@ -48,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
48
53
|
type: Injectable,
|
|
49
54
|
args: [{ providedIn: 'root' }]
|
|
50
55
|
}], ctorParameters: function () { return [{ type: i1.InventoryService }]; } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vZ2xvYmFsLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFrQixnQkFBZ0IsRUFBZSxNQUFNLGFBQWEsQ0FBQzs7O0FBWTVFLE1BQU0sT0FBTyxtQkFBbUI7SUFjOUIsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFYdkMsd0JBQW1CLEdBQW9EO1lBQzdFLFlBQVksRUFBRSxzQkFBc0I7WUFDcEMsWUFBWSxFQUFFLHNCQUFzQjtZQUNwQyxxQkFBcUIsRUFBRSwyQkFBMkI7WUFDbEQsdUJBQXVCLEVBQUUsMkJBQTJCO1lBQ3BELG9CQUFvQixFQUFFLHNCQUFzQjtZQUM1QyxxQkFBcUIsRUFBRSxxQkFBcUI7WUFDNUMsa0JBQWtCLEVBQUUsa0JBQWtCO1lBQ3RDLG9CQUFvQixFQUFFLG9CQUFvQjtTQUNsQyxDQUFDO1FBR1QsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQW9CO1FBQ3hDLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxXQUFXLEVBQUUsWUFBWTtZQUN6QixZQUFZO1NBQ2IsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQztRQUVELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxjQUFjLENBQUMsVUFBc0M7UUFDbkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDdEQsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0UsQ0FBQztJQUNKLENBQUM7O2dIQXBEVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUROLE1BQU07MkZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbmV4cG9ydCB0eXBlIE1hbmFnZWRPYmplY3RUeXBlRm9yQ29uZmlnID1cbiAgfCAnYzh5X1NvZnR3YXJlJ1xuICB8ICdjOHlfRmlybXdhcmUnXG4gIHwgJ2M4eV9Db25maWd1cmF0aW9uRHVtcCdcbiAgfCAnYzh5X01vZGJ1c0RldmljZVR5cGUnXG4gIHwgJ2M4eV9DQU5vcGVuRGV2aWNlVHlwZSdcbiAgfCAnYzh5X0xvcmFEZXZpY2VUeXBlJ1xuICB8ICdjOHlfU2lnZm94RGV2aWNlVHlwZSdcbiAgfCAnYzh5X0RldmljZVNoZWxsVGVtcGxhdGUnO1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBHbG9iYWxDb25maWdTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGNhY2hlOiBQcm9taXNlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0IHwgdW5kZWZpbmVkPj47XG5cbiAgcHJpdmF0ZSBmcmFnbWVudFR5cGVNYXBwaW5nOiB7IFtrZXkgaW4gTWFuYWdlZE9iamVjdFR5cGVGb3JDb25maWddOiBzdHJpbmcgfSA9IHtcbiAgICBjOHlfU29mdHdhcmU6ICdjOHlfU29mdHdhcmVBc0dsb2JhbCcsXG4gICAgYzh5X0Zpcm13YXJlOiAnYzh5X0Zpcm13YXJlQXNHbG9iYWwnLFxuICAgIGM4eV9Db25maWd1cmF0aW9uRHVtcDogJ2M4eV9Db25maWd1cmF0aW9uQXNHbG9iYWwnLFxuICAgIGM4eV9EZXZpY2VTaGVsbFRlbXBsYXRlOiAnYzh5X1NoZWxsVGVtcGxhdGVBc0dsb2JhbCcsXG4gICAgYzh5X01vZGJ1c0RldmljZVR5cGU6ICdjOHlfRmllbGRidXNBc0dsb2JhbCcsXG4gICAgYzh5X0NBTm9wZW5EZXZpY2VUeXBlOiAnYzh5X0NBTk9wZW5Bc0dsb2JhbCcsXG4gICAgYzh5X0xvcmFEZXZpY2VUeXBlOiAnYzh5X0xvcmFBc0dsb2JhbCcsXG4gICAgYzh5X1NpZ2ZveERldmljZVR5cGU6ICdjOHlfU2lnZm94QXNHbG9iYWwnXG4gIH0gYXMgY29uc3Q7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UpIHtcbiAgICB0aGlzLmNhY2hlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgZnJhZ21lbnQgdHlwZS5cbiAgICogQHBhcmFtIGZyYWdtZW50VHlwZSAtIFRoZSBmcmFnbWVudCB0eXBlIG9uIHdoaWNoIHRoZSBtYW5hZ2VkIG9iamVjdCB0eXBlIGNvcnJlc3BvbmRzLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBpbiB0aGUgZmlyc3QgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqL1xuICBhc3luYyBnZXRHbG9iYWxDb25maWcoZnJhZ21lbnRUeXBlOiBzdHJpbmcpOiBQcm9taXNlPElNYW5hZ2VkT2JqZWN0IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICBwYWdlU2l6ZTogMSxcbiAgICAgIHR5cGU6ICdjOHlfR2xvYmFsT2JqZWN0Q29uZmlndXJhdGlvbicsXG4gICAgICBjcmVhdGVkRnJvbTogJzE5OTAtMDEtMDEnLFxuICAgICAgZnJhZ21lbnRUeXBlXG4gICAgfTtcblxuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuaW52ZW50b3J5Lmxpc3QocXVlcnlQYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5jYWNoZSk/LmRhdGFbMF07XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHdoZXRoZXIgYW4gb2JqZWN0IHNob3VsZCBpbmNsdWRlIHRoZSBjOHlfR2xvYmFsIGZyYWdtZW50IGluIGl0cyBkZWNsYXJhdGlvbi5cbiAgICogSWYgdGhlIGZyYWdtZW50IGlzIHNldCB0byBmYWxzZSBpdCBzaG91bGQgcmV0dXJuIGZhbHNlO1xuICAgKiBJZiB0aGUgZnJhZ21lbnQgaXMgc2V0IHRvIHRydWUgIGl0IHNob3VsZCByZXR1cm4gdHJ1ZTtcbiAgICogSWYgbm8gZnJhZ21lbnQgaXMgYXZhaWxhYmxlICBpdCBzaG91bGQgcmV0dXJuIHRydWU7XG4gICAqIEBwYXJhbSBvYmplY3RUeXBlIC0gVGhlIHR5cGUgb2YgbWFuYWdlZCBvYmplY3QuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIGludG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZ2xvYmFsIHBhcmFtZXRlciBzaG91bGQgYmUgc2V0LlxuICAgKi9cbiAgZ2V0R2xvYmFsUGFyYW0ob2JqZWN0VHlwZTogTWFuYWdlZE9iamVjdFR5cGVGb3JDb25maWcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBmcmFnbWVudFR5cGUgPSB0aGlzLmZyYWdtZW50VHlwZU1hcHBpbmdbb2JqZWN0VHlwZV07XG5cbiAgICByZXR1cm4gdGhpcy5nZXRHbG9iYWxDb25maWcoZnJhZ21lbnRUeXBlKS50aGVuKHJlc3VsdCA9PlxuICAgICAgcmVzdWx0ICYmIHJlc3VsdFtmcmFnbWVudFR5cGVdICE9PSB1bmRlZmluZWQgPyAhIXJlc3VsdFtmcmFnbWVudFR5cGVdIDogdHJ1ZVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -94,6 +94,73 @@ export class Permissions {
|
|
|
94
94
|
return false;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
+
Permissions.ROLE_ADVANCED_SOFTWARE_ADMIN = 'ROLE_ADVANCED_SOFTWARE_ADMIN';
|
|
98
|
+
Permissions.ROLE_ADVANCED_SOFTWARE_READ = 'ROLE_ADVANCED_SOFTWARE_READ';
|
|
99
|
+
Permissions.ROLE_ALARM_ADMIN = 'ROLE_ALARM_ADMIN';
|
|
100
|
+
Permissions.ROLE_ALARM_READ = 'ROLE_ALARM_READ';
|
|
101
|
+
Permissions.ROLE_ANALYTICSBUILDER_READ = 'ROLE_ANALYTICSBUILDER_READ';
|
|
102
|
+
Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN = 'ROLE_APPLICATION_MANAGEMENT_ADMIN';
|
|
103
|
+
Permissions.ROLE_APPLICATION_MANAGEMENT_READ = 'ROLE_APPLICATION_MANAGEMENT_READ';
|
|
104
|
+
Permissions.ROLE_AUDIT_ADMIN = 'ROLE_AUDIT_ADMIN';
|
|
105
|
+
Permissions.ROLE_AUDIT_READ = 'ROLE_AUDIT_READ';
|
|
106
|
+
Permissions.ROLE_BINARY_ADMIN = 'ROLE_BINARY_ADMIN';
|
|
107
|
+
Permissions.ROLE_BINARY_CREATE = 'ROLE_BINARY_CREATE';
|
|
108
|
+
Permissions.ROLE_BINARY_READ = 'ROLE_BINARY_READ';
|
|
109
|
+
Permissions.ROLE_BULK_OPERATION_ADMIN = 'ROLE_BULK_OPERATION_ADMIN';
|
|
110
|
+
Permissions.ROLE_BULK_OPERATION_READ = 'ROLE_BULK_OPERATION_READ';
|
|
111
|
+
Permissions.ROLE_CEP_MANAGEMENT_ADMIN = 'ROLE_CEP_MANAGEMENT_ADMIN';
|
|
112
|
+
Permissions.ROLE_CEP_MANAGEMENT_READ = 'ROLE_CEP_MANAGEMENT_READ';
|
|
113
|
+
Permissions.ROLE_DATA_BROKER_ADMIN = 'ROLE_DATA_BROKER_ADMIN';
|
|
114
|
+
Permissions.ROLE_DATA_BROKER_READ = 'ROLE_DATA_BROKER_READ';
|
|
115
|
+
Permissions.ROLE_DEVICE_CONTROL_ADMIN = 'ROLE_DEVICE_CONTROL_ADMIN';
|
|
116
|
+
Permissions.ROLE_DEVICE_CONTROL_READ = 'ROLE_DEVICE_CONTROL_READ';
|
|
117
|
+
Permissions.ROLE_EMAIL_CREATE = 'ROLE_EMAIL_CREATE';
|
|
118
|
+
Permissions.ROLE_EPLAPPS_READ = 'ROLE_EPLAPPS_READ';
|
|
119
|
+
Permissions.ROLE_EVENT_ADMIN = 'ROLE_EVENT_ADMIN';
|
|
120
|
+
Permissions.ROLE_EVENT_READ = 'ROLE_EVENT_READ';
|
|
121
|
+
Permissions.ROLE_GENERIC_MQTT_ADMIN = 'ROLE_GENERIC_MQTT_ADMIN';
|
|
122
|
+
Permissions.ROLE_IDENTITY_ADMIN = 'ROLE_IDENTITY_ADMIN';
|
|
123
|
+
Permissions.ROLE_IDENTITY_READ = 'ROLE_IDENTITY_READ';
|
|
124
|
+
Permissions.ROLE_INVENTORY_ADMIN = 'ROLE_INVENTORY_ADMIN';
|
|
125
|
+
Permissions.ROLE_INVENTORY_CREATE = 'ROLE_INVENTORY_CREATE';
|
|
126
|
+
Permissions.ROLE_INVENTORY_READ = 'ROLE_INVENTORY_READ';
|
|
127
|
+
Permissions.ROLE_MACHINE_LEARNING_READ = 'ROLE_MACHINE_LEARNING_READ';
|
|
128
|
+
Permissions.ROLE_MANAGED_OBJECT_ADMIN = 'ROLE_MANAGED_OBJECT_ADMIN';
|
|
129
|
+
Permissions.ROLE_MANAGED_OBJECT_CREATE = 'ROLE_MANAGED_OBJECT_CREATE';
|
|
130
|
+
Permissions.ROLE_MANAGED_OBJECT_READ = 'ROLE_MANAGED_OBJECT_READ';
|
|
131
|
+
Permissions.ROLE_MEASUREMENT_ADMIN = 'ROLE_MEASUREMENT_ADMIN';
|
|
132
|
+
Permissions.ROLE_MEASUREMENT_READ = 'ROLE_MEASUREMENT_READ';
|
|
133
|
+
Permissions.ROLE_MQTT_CONNECT_ADMIN = 'ROLE_MQTT_CONNECT_ADMIN';
|
|
134
|
+
Permissions.ROLE_MQTT_SERVICE_ADMIN = 'ROLE_MQTT_SERVICE_ADMIN';
|
|
135
|
+
Permissions.ROLE_NOTIFICATION_2_ADMIN = 'ROLE_NOTIFICATION_2_ADMIN';
|
|
136
|
+
Permissions.ROLE_OPTION_MANAGEMENT_ADMIN = 'ROLE_OPTION_MANAGEMENT_ADMIN';
|
|
137
|
+
Permissions.ROLE_OPTION_MANAGEMENT_READ = 'ROLE_OPTION_MANAGEMENT_READ';
|
|
138
|
+
Permissions.ROLE_PROVISIONING_CREATE = 'ROLE_PROVISIONING_CREATE';
|
|
139
|
+
Permissions.ROLE_PROVISIONING_READ = 'ROLE_PROVISIONING_READ';
|
|
140
|
+
Permissions.ROLE_PROVISIONING_UPDATE = 'ROLE_PROVISIONING_UPDATE';
|
|
141
|
+
Permissions.ROLE_REMOTE_ACCESS_ADMIN = 'ROLE_REMOTE_ACCESS_ADMIN';
|
|
142
|
+
Permissions.ROLE_RETENTION_RULE_ADMIN = 'ROLE_RETENTION_RULE_ADMIN';
|
|
143
|
+
Permissions.ROLE_RETENTION_RULE_READ = 'ROLE_RETENTION_RULE_READ';
|
|
144
|
+
Permissions.ROLE_SCHEDULE_REPORT_ADMIN = 'ROLE_SCHEDULE_REPORT_ADMIN';
|
|
145
|
+
Permissions.ROLE_SIMULATOR_ADMIN = 'ROLE_SIMULATOR_ADMIN';
|
|
146
|
+
Permissions.ROLE_SMARTGROUP_ADMIN = 'ROLE_SMARTGROUP_ADMIN';
|
|
147
|
+
Permissions.ROLE_SMARTGROUP_CREATE = 'ROLE_SMARTGROUP_CREATE';
|
|
148
|
+
Permissions.ROLE_SMARTGROUP_UPDATE = 'ROLE_SMARTGROUP_UPDATE';
|
|
149
|
+
Permissions.ROLE_SMARTRULE_ADMIN = 'ROLE_SMARTRULE_ADMIN';
|
|
150
|
+
Permissions.ROLE_SMARTRULE_READ = 'ROLE_SMARTRULE_READ';
|
|
151
|
+
Permissions.ROLE_SMS_ADMIN = 'ROLE_SMS_ADMIN';
|
|
152
|
+
Permissions.ROLE_SMS_READ = 'ROLE_SMS_READ';
|
|
153
|
+
Permissions.ROLE_TENANT_ADMIN = 'ROLE_TENANT_ADMIN';
|
|
154
|
+
Permissions.ROLE_TENANT_MANAGEMENT_ADMIN = 'ROLE_TENANT_MANAGEMENT_ADMIN';
|
|
155
|
+
Permissions.ROLE_TENANT_MANAGEMENT_CREATE = 'ROLE_TENANT_MANAGEMENT_CREATE';
|
|
156
|
+
Permissions.ROLE_TENANT_MANAGEMENT_READ = 'ROLE_TENANT_MANAGEMENT_READ';
|
|
157
|
+
Permissions.ROLE_TENANT_MANAGEMENT_UPDATE = 'ROLE_TENANT_MANAGEMENT_UPDATE';
|
|
158
|
+
Permissions.ROLE_TENANT_STATISTICS_READ = 'ROLE_TENANT_STATISTICS_READ';
|
|
159
|
+
Permissions.ROLE_USER_MANAGEMENT_ADMIN = 'ROLE_USER_MANAGEMENT_ADMIN';
|
|
160
|
+
Permissions.ROLE_USER_MANAGEMENT_CREATE = 'ROLE_USER_MANAGEMENT_CREATE';
|
|
161
|
+
Permissions.ROLE_USER_MANAGEMENT_OWN_ADMIN = 'ROLE_USER_MANAGEMENT_OWN_ADMIN';
|
|
162
|
+
Permissions.ROLE_USER_MANAGEMENT_OWN_READ = 'ROLE_USER_MANAGEMENT_OWN_READ';
|
|
163
|
+
Permissions.ROLE_USER_MANAGEMENT_READ = 'ROLE_USER_MANAGEMENT_READ';
|
|
97
164
|
Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Permissions, deps: [{ token: i1.AppStateService }, { token: i2.InventoryService }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
98
165
|
Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Permissions, providedIn: 'root' });
|
|
99
166
|
__decorate([
|
|
@@ -112,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
112
179
|
type: Injectable,
|
|
113
180
|
args: [{ providedIn: 'root' }]
|
|
114
181
|
}], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i2.InventoryService }, { type: i2.UserService }]; }, propDecorators: { checkIfOwner: [], checkWithRequest: [] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQWtCMUMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDVSxRQUF5QixFQUN6QixTQUEyQixFQUMzQixJQUFpQjtRQUZqQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ3hCLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLEVBQWdDLEVBQ2hDLFNBQXdCO1FBQ3RCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGdCQUFnQixFQUFFLEtBQUs7S0FDeEI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1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V0FBVyxjQURFLE1BQU07QUFrRWQ7SUFEZixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7OytDQUt2QjtBQUVEO0lBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OzttREFjdkI7MkZBckZVLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOytKQWtFaEIsWUFBWSxNQU9sQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZS5kZWNvcmF0b3InO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbmV4cG9ydCB0eXBlIENhbkVkaXRDb25maWcgPSB7XG4gIC8qKlxuICAgKiBTa2lwcyByb2xlcyBjaGVjay5cbiAgICovXG4gIHNraXBSb2xlc0NoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNraXBzIG1hbmFnZWQgb2JqZWN0IG93bmVyc2hpcCBjaGVjay5cbiAgICovXG4gIHNraXBPd25lckNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNraXBzIGNoZWNrcyB3aXRoIGEgcXVlcnkgdG8gdGhlIGludmVudG9yeSBBUEkuXG4gICAqL1xuICBza2lwUmVxdWVzdENoZWNrPzogYm9vbGVhbjtcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGdpdmVuIG1vLlxuICAgKiAoZWl0aGVyIHRocm91Z2ggZ2xvYmFsIHJvbGUsIGluZGl2aWR1YWwgZGV2aWNlIHBlcm1pc3Npb25zIG9yIHZpYSBpbnZlbnRvcnkgcm9sZXMpLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSByb2xlSWRzIEFycmF5IG9mIHJvbGVzIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgc2hvdWxkIGhhdmUuXG4gICAqIEBwYXJhbSB7SU1hbmFnZWRPYmplY3QgfCBJSWRlbnRpZmllZH0gbW8gVGhlIG1hbmFnZWQgb2JqZWN0IGZvciB3aGljaCB3ZSBhcmUgY2hlY2tpbmcgd2hldGhlciB0aGUgdXNlciBoYXMgYWNjZXNzLlxuICAgKiBAcGFyYW0ge0NhbkVkaXRDb25maWd9IGNvbmZpZyBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRoYXQgY2FuIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4gICAqIC0gYHNraXBSb2xlc0NoZWNrYDogYGJvb2xlYW5gIC0gc2tpcHMgcm9sZXMgY2hlY2ssXG4gICAqIC0gYHNraXBPd25lckNoZWNrYDogYGJvb2xlYW5gIC0gc2tpcHMgb3duZXJzaGlwIGNoZWNrLFxuICAgKiAtIGBza2lwUmVxdWVzdENoZWNrYDogYGJvb2xlYW5gIC0gc2tpcHMgY2hlY2tzIHdpdGggYSBxdWVyeSB0byB0aGUgaW52ZW50b3J5IEFQSS5cbiAgICogICBVSSB3aWxsIG1ha2UgYSBxdWVyeSB0byBiYWNrZW5kIHdoZXRoZXIgdGhlIHVzZXIgY2FuIGVkaXQgdGhlIG1hbmFnZWQgb2JqZWN0LlxuICAgKiAgIEEgcmVqZWN0aW9uIGZyb20gQkUgaW5kaWNhdGVzIGEgbGFjayBvZiBwZXJtaXNzaW9uLlxuICAgKi9cbiAgY2FuRWRpdChcbiAgICByb2xlSWRzLFxuICAgIG1vOiBJTWFuYWdlZE9iamVjdCB8IElJZGVudGlmaWVkLFxuICAgIGNvbmZpZzogQ2FuRWRpdENvbmZpZyA9IHtcbiAgICAgIHNraXBSb2xlc0NoZWNrOiBmYWxzZSxcbiAgICAgIHNraXBPd25lckNoZWNrOiBmYWxzZSxcbiAgICAgIHNraXBSZXF1ZXN0Q2hlY2s6IGZhbHNlXG4gICAgfVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0lmQ2FuRWRpdChyb2xlSWRzLCBtbywgY29uZmlnKTtcbiAgfVxuXG4gIGhhc1JvbGUocm9sZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb2xlcyBjYW4gb25seSBiZSByZXF1ZXN0ZWQgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51c2VyLmhhc1JvbGUoY3VycmVudFVzZXIsIHJvbGVJZCk7XG4gIH1cblxuICBoYXNBbGxSb2xlcyhyb2xlSWRzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQWxsUm9sZXMoY3VycmVudFVzZXIsIHJvbGVJZHMpO1xuICB9XG5cbiAgaGFzQW55Um9sZShyb2xlSWRzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQW55Um9sZShjdXJyZW50VXNlciwgcm9sZUlkcyk7XG4gIH1cblxuICBoYXNBbnlHbG9iYWxSb2xlKGdsb2JhbFJvbGVzSWRzOiBudW1iZXJbXSkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbCByb2xlcyBjYW4gb25seSBiZSByZXF1ZXN0ZWQgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51c2VyLmhhc0FueUdsb2JhbFJvbGUoY3VycmVudFVzZXIsIGdsb2JhbFJvbGVzSWRzKTtcbiAgfVxuXG4gIEBtZW1vaXplKHByb3BlcnR5KCdpZCcpKVxuICBwcm90ZWN0ZWQgYXN5bmMgY2hlY2tJZk93bmVyKG1vKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXJOYW1lID0gYXdhaXQgdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZS51c2VyTmFtZTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChtby5pZCk7XG4gICAgcmV0dXJuIGN1cnJlbnRVc2VyTmFtZSA9PT0gZGF0YS5vd25lcjtcbiAgfVxuXG4gIEBtZW1vaXplKHByb3BlcnR5KCdpZCcpKVxuICBwcm90ZWN0ZWQgY2hlY2tXaXRoUmVxdWVzdChtbykge1xuICAgIGNvbnN0IG1vSWQgPSBtby5pZDtcbiAgICBjb25zdCBwYXJ0aWFsVXBkYXRlT2JqZWN0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHtcbiAgICAgIGlkOiBtb0lkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnlcbiAgICAgIC51cGRhdGUocGFydGlhbFVwZGF0ZU9iamVjdClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrSWZDYW5FZGl0KHJvbGVJZHMsIG1vLCBjb25maWc6IENhbkVkaXRDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZz8uc2tpcFJvbGVzQ2hlY2sgJiYgKGF3YWl0IHRoaXMuaGFzQW55Um9sZShyb2xlSWRzKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWNvbmZpZz8uc2tpcE93bmVyQ2hlY2sgJiYgKGF3YWl0IHRoaXMuY2hlY2tJZk93bmVyKG1vKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWNvbmZpZz8uc2tpcFJlcXVlc3RDaGVjayAmJiAoYXdhaXQgdGhpcy5jaGVja1dpdGhSZXF1ZXN0KG1vKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQWtCMUMsTUFBTSxPQUFPLFdBQVc7SUFxRXRCLFlBQ1UsUUFBeUIsRUFDekIsU0FBMkIsRUFDM0IsSUFBaUI7UUFGakIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUN4QixDQUFDO0lBRUo7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsT0FBTyxDQUNMLE9BQU8sRUFDUCxFQUFnQyxFQUNoQyxTQUF3QjtRQUN0QixjQUFjLEVBQUUsS0FBSztRQUNyQixjQUFjLEVBQUUsS0FBSztRQUNyQixnQkFBZ0IsRUFBRSxLQUFLO0tBQ3hCO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFjO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMs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LENBQUM7QUFDaEUsdUNBQTJCLEdBQUcsNkJBQTZCLENBQUM7QUFDNUQsc0NBQTBCLEdBQUcsNEJBQTRCLENBQUM7QUFDMUQsdUNBQTJCLEdBQUcsNkJBQTZCLENBQUM7QUFDNUQsMENBQThCLEdBQUcsZ0NBQWdDLENBQUM7QUFDbEUseUNBQTZCLEdBQUcsK0JBQStCLENBQUM7QUFDaEUscUNBQXlCLEdBQUcsMkJBQTJCLENBQUM7d0dBbkVwRCxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNO0FBc0lkO0lBRGYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OzsrQ0FLdkI7QUFFRDtJQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7bURBY3ZCOzJGQXpKVSxXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTsrSkFzSWhCLFlBQVksTUFPbEIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG5leHBvcnQgdHlwZSBDYW5FZGl0Q29uZmlnID0ge1xuICAvKipcbiAgICogU2tpcHMgcm9sZXMgY2hlY2suXG4gICAqL1xuICBza2lwUm9sZXNDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwcyBtYW5hZ2VkIG9iamVjdCBvd25lcnNoaXAgY2hlY2suXG4gICAqL1xuICBza2lwT3duZXJDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwcyBjaGVja3Mgd2l0aCBhIHF1ZXJ5IHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgKi9cbiAgc2tpcFJlcXVlc3RDaGVjaz86IGJvb2xlYW47XG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zIHtcbiAgc3RhdGljIFJPTEVfQURWQU5DRURfU09GVFdBUkVfQURNSU4gPSAnUk9MRV9BRFZBTkNFRF9TT0ZUV0FSRV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0FEVkFOQ0VEX1NPRlRXQVJFX1JFQUQgPSAnUk9MRV9BRFZBTkNFRF9TT0ZUV0FSRV9SRUFEJztcbiAgc3RhdGljIFJPTEVfQUxBUk1fQURNSU4gPSAnUk9MRV9BTEFSTV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0FMQVJNX1JFQUQgPSAnUk9MRV9BTEFSTV9SRUFEJztcbiAgc3RhdGljIFJPTEVfQU5BTFlUSUNTQlVJTERFUl9SRUFEID0gJ1JPTEVfQU5BTFlUSUNTQlVJTERFUl9SRUFEJztcbiAgc3RhdGljIFJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX1JFQUQgPSAnUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9BVURJVF9BRE1JTiA9ICdST0xFX0FVRElUX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQVVESVRfUkVBRCA9ICdST0xFX0FVRElUX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9CSU5BUllfQURNSU4gPSAnUk9MRV9CSU5BUllfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9CSU5BUllfQ1JFQVRFID0gJ1JPTEVfQklOQVJZX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX0JJTkFSWV9SRUFEID0gJ1JPTEVfQklOQVJZX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9CVUxLX09QRVJBVElPTl9BRE1JTiA9ICdST0xFX0JVTEtfT1BFUkFUSU9OX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQlVMS19PUEVSQVRJT05fUkVBRCA9ICdST0xFX0JVTEtfT1BFUkFUSU9OX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9DRVBfTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX0NFUF9NQU5BR0VNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQ0VQX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX0NFUF9NQU5BR0VNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9EQVRBX0JST0tFUl9BRE1JTiA9ICdST0xFX0RBVEFfQlJPS0VSX0FETUlOJztcbiAgc3RhdGljIFJPTEVfREFUQV9CUk9LRVJfUkVBRCA9ICdST0xFX0RBVEFfQlJPS0VSX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9ERVZJQ0VfQ09OVFJPTF9BRE1JTiA9ICdST0xFX0RFVklDRV9DT05UUk9MX0FETUlOJztcbiAgc3RhdGljIFJPTEVfREVWSUNFX0NPTlRST0xfUkVBRCA9ICdST0xFX0RFVklDRV9DT05UUk9MX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9FTUFJTF9DUkVBVEUgPSAnUk9MRV9FTUFJTF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9FUExBUFBTX1JFQUQgPSAnUk9MRV9FUExBUFBTX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9FVkVOVF9BRE1JTiA9ICdST0xFX0VWRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfRVZFTlRfUkVBRCA9ICdST0xFX0VWRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9HRU5FUklDX01RVFRfQURNSU4gPSAnUk9MRV9HRU5FUklDX01RVFRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9JREVOVElUWV9BRE1JTiA9ICdST0xFX0lERU5USVRZX0FETUlOJztcbiAgc3RhdGljIFJPTEVfSURFTlRJVFlfUkVBRCA9ICdST0xFX0lERU5USVRZX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9JTlZFTlRPUllfQURNSU4gPSAnUk9MRV9JTlZFTlRPUllfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9JTlZFTlRPUllfQ1JFQVRFID0gJ1JPTEVfSU5WRU5UT1JZX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX0lOVkVOVE9SWV9SRUFEID0gJ1JPTEVfSU5WRU5UT1JZX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NQUNISU5FX0xFQVJOSU5HX1JFQUQgPSAnUk9MRV9NQUNISU5FX0xFQVJOSU5HX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTiA9ICdST0xFX01BTkFHRURfT0JKRUNUX0FETUlOJztcbiAgc3RhdGljIFJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFID0gJ1JPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfTUFOQUdFRF9PQkpFQ1RfUkVBRCA9ICdST0xFX01BTkFHRURfT0JKRUNUX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NRUFTVVJFTUVOVF9BRE1JTiA9ICdST0xFX01FQVNVUkVNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfTUVBU1VSRU1FTlRfUkVBRCA9ICdST0xFX01FQVNVUkVNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NUVRUX0NPTk5FQ1RfQURNSU4gPSAnUk9MRV9NUVRUX0NPTk5FQ1RfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9NUVRUX1NFUlZJQ0VfQURNSU4gPSAnUk9MRV9NUVRUX1NFUlZJQ0VfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9OT1RJRklDQVRJT05fMl9BRE1JTiA9ICdST0xFX05PVElGSUNBVElPTl8yX0FETUlOJztcbiAgc3RhdGljIFJPTEVfT1BUSU9OX01BTkFHRU1FTlRfQURNSU4gPSAnUk9MRV9PUFRJT05fTUFOQUdFTUVOVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX09QVElPTl9NQU5BR0VNRU5UX1JFQUQgPSAnUk9MRV9PUFRJT05fTUFOQUdFTUVOVF9SRUFEJztcbiAgc3RhdGljIFJPTEVfUFJPVklTSU9OSU5HX0NSRUFURSA9ICdST0xFX1BST1ZJU0lPTklOR19DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9QUk9WSVNJT05JTkdfUkVBRCA9ICdST0xFX1BST1ZJU0lPTklOR19SRUFEJztcbiAgc3RhdGljIFJPTEVfUFJPVklTSU9OSU5HX1VQREFURSA9ICdST0xFX1BST1ZJU0lPTklOR19VUERBVEUnO1xuICBzdGF0aWMgUk9MRV9SRU1PVEVfQUNDRVNTX0FETUlOID0gJ1JPTEVfUkVNT1RFX0FDQ0VTU19BRE1JTic7XG4gIHN0YXRpYyBST0xFX1JFVEVOVElPTl9SVUxFX0FETUlOID0gJ1JPTEVfUkVURU5USU9OX1JVTEVfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9SRVRFTlRJT05fUlVMRV9SRUFEID0gJ1JPTEVfUkVURU5USU9OX1JVTEVfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1NDSEVEVUxFX1JFUE9SVF9BRE1JTiA9ICdST0xFX1NDSEVEVUxFX1JFUE9SVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1NJTVVMQVRPUl9BRE1JTiA9ICdST0xFX1NJTVVMQVRPUl9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1NNQVJUR1JPVVBfQURNSU4gPSAnUk9MRV9TTUFSVEdST1VQX0FETUlOJztcbiAgc3RhdGljIFJPTEVfU01BUlRHUk9VUF9DUkVBVEUgPSAnUk9MRV9TTUFSVEdST1VQX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX1NNQVJUR1JPVVBfVVBEQVRFID0gJ1JPTEVfU01BUlRHUk9VUF9VUERBVEUnO1xuICBzdGF0aWMgUk9MRV9TTUFSVFJVTEVfQURNSU4gPSAnUk9MRV9TTUFSVFJVTEVfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9TTUFSVFJVTEVfUkVBRCA9ICdST0xFX1NNQVJUUlVMRV9SRUFEJztcbiAgc3RhdGljIFJPTEVfU01TX0FETUlOID0gJ1JPTEVfU01TX0FETUlOJztcbiAgc3RhdGljIFJPTEVfU01TX1JFQUQgPSAnUk9MRV9TTVNfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9BRE1JTiA9ICdST0xFX1RFTkFOVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX0FETUlOID0gJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9DUkVBVEUgPSAnUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEID0gJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1VQREFURSA9ICdST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1VQREFURSc7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9TVEFUSVNUSUNTX1JFQUQgPSAnUk9MRV9URU5BTlRfU1RBVElTVElDU19SRUFEJztcbiAgc3RhdGljIFJPTEVfVVNFUl9NQU5BR0VNRU5UX0FETUlOID0gJ1JPTEVfVVNFUl9NQU5BR0VNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfVVNFUl9NQU5BR0VNRU5UX0NSRUFURSA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9VU0VSX01BTkFHRU1FTlRfT1dOX0FETUlOID0gJ1JPTEVfVVNFUl9NQU5BR0VNRU5UX09XTl9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1VTRVJfTUFOQUdFTUVOVF9PV05fUkVBRCA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9PV05fUkVBRCc7XG4gIHN0YXRpYyBST0xFX1VTRVJfTUFOQUdFTUVOVF9SRUFEID0gJ1JPTEVfVVNFUl9NQU5BR0VNRU5UX1JFQUQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXI6IFVzZXJTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGUgZ2l2ZW4gbW8uXG4gICAqIChlaXRoZXIgdGhyb3VnaCBnbG9iYWwgcm9sZSwgaW5kaXZpZHVhbCBkZXZpY2UgcGVybWlzc2lvbnMgb3IgdmlhIGludmVudG9yeSByb2xlcykuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IHJvbGVJZHMgQXJyYXkgb2Ygcm9sZXMgd2hpY2ggdGhlIGN1cnJlbnQgdXNlciBzaG91bGQgaGF2ZS5cbiAgICogQHBhcmFtIHtJTWFuYWdlZE9iamVjdCB8IElJZGVudGlmaWVkfSBtbyBUaGUgbWFuYWdlZCBvYmplY3QgZm9yIHdoaWNoIHdlIGFyZSBjaGVja2luZyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhY2Nlc3MuXG4gICAqIEBwYXJhbSB7Q2FuRWRpdENvbmZpZ30gY29uZmlnIEEgY29uZmlndXJhdGlvbiBvYmplY3QgdGhhdCBjYW4gdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAgICogLSBgc2tpcFJvbGVzQ2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyByb2xlcyBjaGVjayxcbiAgICogLSBgc2tpcE93bmVyQ2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyBvd25lcnNoaXAgY2hlY2ssXG4gICAqIC0gYHNraXBSZXF1ZXN0Q2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyBjaGVja3Mgd2l0aCBhIHF1ZXJ5IHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgKiAgIFVJIHdpbGwgbWFrZSBhIHF1ZXJ5IHRvIGJhY2tlbmQgd2hldGhlciB0aGUgdXNlciBjYW4gZWRpdCB0aGUgbWFuYWdlZCBvYmplY3QuXG4gICAqICAgQSByZWplY3Rpb24gZnJvbSBCRSBpbmRpY2F0ZXMgYSBsYWNrIG9mIHBlcm1pc3Npb24uXG4gICAqL1xuICBjYW5FZGl0KFxuICAgIHJvbGVJZHMsXG4gICAgbW86IElNYW5hZ2VkT2JqZWN0IHwgSUlkZW50aWZpZWQsXG4gICAgY29uZmlnOiBDYW5FZGl0Q29uZmlnID0ge1xuICAgICAgc2tpcFJvbGVzQ2hlY2s6IGZhbHNlLFxuICAgICAgc2tpcE93bmVyQ2hlY2s6IGZhbHNlLFxuICAgICAgc2tpcFJlcXVlc3RDaGVjazogZmFsc2VcbiAgICB9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmNoZWNrSWZDYW5FZGl0KHJvbGVJZHMsIG1vLCBjb25maWcpO1xuICB9XG5cbiAgaGFzUm9sZShyb2xlSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzUm9sZShjdXJyZW50VXNlciwgcm9sZUlkKTtcbiAgfVxuXG4gIGhhc0FsbFJvbGVzKHJvbGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbGxSb2xlcyhjdXJyZW50VXNlciwgcm9sZUlkcyk7XG4gIH1cblxuICBoYXNBbnlSb2xlKHJvbGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbnlSb2xlKGN1cnJlbnRVc2VyLCByb2xlSWRzKTtcbiAgfVxuXG4gIGhhc0FueUdsb2JhbFJvbGUoZ2xvYmFsUm9sZXNJZHM6IG51bWJlcltdKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR2xvYmFsIHJvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQW55R2xvYmFsUm9sZShjdXJyZW50VXNlciwgZ2xvYmFsUm9sZXNJZHMpO1xuICB9XG5cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja0lmT3duZXIobW8pIHtcbiAgICBjb25zdCBjdXJyZW50VXNlck5hbWUgPSBhd2FpdCB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLnVzZXJOYW1lO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKG1vLmlkKTtcbiAgICByZXR1cm4gY3VycmVudFVzZXJOYW1lID09PSBkYXRhLm93bmVyO1xuICB9XG5cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIHByb3RlY3RlZCBjaGVja1dpdGhSZXF1ZXN0KG1vKSB7XG4gICAgY29uc3QgbW9JZCA9IG1vLmlkO1xuICAgIGNvbnN0IHBhcnRpYWxVcGRhdGVPYmplY3Q6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgaWQ6IG1vSWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeVxuICAgICAgLnVwZGF0ZShwYXJ0aWFsVXBkYXRlT2JqZWN0KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tJZkNhbkVkaXQocm9sZUlkcywgbW8sIGNvbmZpZzogQ2FuRWRpdENvbmZpZykge1xuICAgIGlmICghY29uZmlnPy5za2lwUm9sZXNDaGVjayAmJiAoYXdhaXQgdGhpcy5oYXNBbnlSb2xlKHJvbGVJZHMpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghY29uZmlnPy5za2lwT3duZXJDaGVjayAmJiAoYXdhaXQgdGhpcy5jaGVja0lmT3duZXIobW8pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghY29uZmlnPy5za2lwUmVxdWVzdENoZWNrICYmIChhd2FpdCB0aGlzLmNoZWNrV2l0aFJlcXVlc3QobW8pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -3,6 +3,7 @@ import { ApplicationType, GrantType, TenantLoginOptionType, UserManagementSource
|
|
|
3
3
|
import { get } from 'lodash-es';
|
|
4
4
|
import { AppStateService } from './ui-state.service';
|
|
5
5
|
import { take } from 'rxjs/operators';
|
|
6
|
+
import { Permissions } from '../common/permissions.service';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@c8y/client";
|
|
8
9
|
import * as i2 from "./ui-state.service";
|
|
@@ -12,7 +13,7 @@ export class TenantUiService {
|
|
|
12
13
|
this.userService = userService;
|
|
13
14
|
this.appStateService = appStateService;
|
|
14
15
|
this.MANAGEMENT = 'management';
|
|
15
|
-
this.ROLE_TENANT_MANAGEMENT_READ =
|
|
16
|
+
this.ROLE_TENANT_MANAGEMENT_READ = Permissions.ROLE_TENANT_MANAGEMENT_READ;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Returns current tenant
|
|
@@ -237,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
237
238
|
type: Injectable,
|
|
238
239
|
args: [{ providedIn: 'root' }]
|
|
239
240
|
}], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.AppStateService }]; } });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXVpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUtULHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV0QyxtRkFBbUY7QUFFbkYsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQztRQUFsRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUg3RSxlQUFVLEdBQUcsWUFBWSxDQUFDO1FBQzFCLGdDQUEyQixHQUFHLDZCQUE2QixDQUFDO0lBRW9CLENBQUM7SUFFMUY7O09BRUc7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQjtRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FB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QixFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU8sVUFBVTthQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFvQixFQUFFLGVBQXVCO1FBQzFELElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxZQUFZLENBQUMsYUFBNkI7UUFDaEQsT0FBTyxhQUFhLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDaEQsQ0FBQzs7NEdBL1BVLGVBQWU7Z0hBQWYsZUFBZSxjQURGLE1BQU07MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25UeXBlLFxuICBHcmFudFR5cGUsXG4gIElBcHBsaWNhdGlvbixcbiAgSUFwcGxpY2F0aW9uUmVmZXJlbmNlLFxuICBJQ3VycmVudFRlbmFudCxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBUZW5hbnRMb2dpbk9wdGlvblR5cGUsXG4gIFVzZXJNYW5hZ2VtZW50U291cmNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKiBUaGUgaGVscGVyIFVJIHNlcnZpY2UgZm9yIHRlbmFudCByZWxhdGVkIG1ldGhvZHMgYnVpbHQgdXBvbiBjbGllbnQgc2VydmljZXMuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRlbmFudFVpU2VydmljZSB7XG4gIHJlYWRvbmx5IE1BTkFHRU1FTlQgPSAnbWFuYWdlbWVudCc7XG4gIHJlYWRvbmx5IFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLCBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGN1cnJlbnQgdGVuYW50XG4gICAqL1xuICBnZXQgY3VycmVudFRlbmFudCgpOiBJQ3VycmVudFRlbmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgY3VycmVudCB0ZW5hbnQgaXMgdGhlIG1hbmFnZW1lbnQgdGVuYW50LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGN1cnJlbnQgdGVuYW50IGlzIHRoZSBtYW5hZ2VtZW50IHRlbmFudC5cbiAgICovXG4gIGFzeW5jIGlzTWFuYWdlbWVudFRlbmFudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5pc01hbmFnZW1lbnQoY3VycmVudFRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgY3VycmVudCB0ZW5hbnQgaXMgYW4gZW50ZXJwcmlzZSB0ZW5hbnQuXG4gICAqIEFuIGVudGVycHJpc2UgdGVuYW50IGlzIGEgdGVuYW50IHdoaWNoIGhhcyBzdWJzY3JpYmVkOlxuICAgKiAtIGBicmFuZGluZ2AgbWljcm9zZXJ2aWNlIG9yIGBmZWF0dXJlLWJyYW5kaW5nYCBmZWF0dXJlIGFwcCxcbiAgICogLSBgc3NsbWFuYWdlbWVudGAgbWljcm9zZXJ2aWNlLFxuICAgKiAtIGBmZWF0dXJlLXVzZXItaGllcmFyY2h5YCBmZWF0dXJlIGFwcCxcbiAgICogLSBgZmVhdHVyZS1icm9rZXJgIGZlYXR1cmUgYXBwLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZW50ZXJwcmlzZS1lZGl0aW9uLyBmb3IgZGV0YWlscyBhYm91dCBzdWNoIHRlbmFudHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRydWUsIGlmIGN1cnJlbnQgdGVuYW50IGlzIGFuIGVudGVycHJpc2UgdGVuYW50LlxuICAgKi9cbiAgYXN5bmMgaXNFbnRlcnByaXNlVGVuYW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGF2YWlsYWJsZUFwcHNPZlVzZXIgPSBhd2FpdCB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50QXBwc09mVXNlclxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC50b1Byb21pc2UoKTtcblxuICAgIGNvbnN0IGJyYW5kaW5nQXZhaWxhYmxlID1cbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdicmFuZGluZycpIHx8XG4gICAgICB0aGlzLmhhc0FwcChhdmFpbGFibGVBcHBzT2ZVc2VyLCAnZmVhdHVyZS1icmFuZGluZycpO1xuXG4gICAgY29uc3QgcmVxdWlyZWRBcHBzQW5kRmVhdHVyZXNBdmFpbGFibGUgPVxuICAgICAgYnJhbmRpbmdBdmFpbGFibGUgJiZcbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdzc2xtYW5hZ2VtZW50JykgJiZcbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdmZWF0dXJlLXVzZXItaGllcmFyY2h5JykgJiZcbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdmZWF0dXJlLWJyb2tlcicpO1xuXG4gICAgcmV0dXJuIHJlcXVpcmVkQXBwc0FuZEZlYXR1cmVzQXZhaWxhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaGFzIHJlYWQgYWNjZXNzIHRvIHRlbmFudHMsIGkuZS46XG4gICAqIC0gdGhlIGN1cnJlbnQgdGVuYW50IGNhbiBjcmVhdGUgc3VidGVuYW50cyBvciBpdCdzIHRoZSBtYW5hZ2VtZW50IHRlbmFudCxcbiAgICogLSB0aGUgY3VycmVudCB1c2VyIGhhcyBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQgcm9sZS5cbiAgICogQHJldHVybnMgVHJ1ZSwgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgcmVhZCBhY2Nlc3MgdG8gdGVuYW50cy5cbiAgICovXG4gIGNhblJlYWRUZW5hbnRzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LnZhbHVlO1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFVzZXIudmFsdWU7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmlzTWFuYWdlbWVudChjdXJyZW50VGVuYW50KSB8fCBjdXJyZW50VGVuYW50LmFsbG93Q3JlYXRlVGVuYW50cykgJiZcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuaGFzUm9sZShjdXJyZW50VXNlciwgdGhpcy5ST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGN1cnJlbnQgdGVuYW50IHByZWZlcnJlZCBsb2dpbiBtb2RlLlxuICAgKi9cbiAgZ2V0Q3VycmVudFRlbmFudFByZWZlcnJlZExvZ2luT3B0aW9uKCk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJlZmVycmVkTG9naW5PcHRpb24odGhpcy5hcHBTdGF0ZVNlcnZpY2Uuc3RhdGUubG9naW5PcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGN1cnJlbnQgdXNlciBsb2dpbiBtb2RlLlxuICAgKi9cbiAgZ2V0Q3VycmVudFVzZXJMb2dpbk1vZGUoKTogVGVuYW50TG9naW5PcHRpb25UeXBlIHtcbiAgICBjb25zdCBwcmVmZXJyZWRMb2dpbk9wdGlvbiA9IHRoaXMuZ2V0Q3VycmVudFRlbmFudFByZWZlcnJlZExvZ2luT3B0aW9uKCk7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoY3VycmVudFVzZXIuY3VzdG9tUHJvcGVydGllcy51c2VyT3JpZ2luID09PSAnT0FVVEgyJykge1xuICAgICAgcmV0dXJuIFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDI7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmlzQmFzaWMocHJlZmVycmVkTG9naW5PcHRpb24pXG4gICAgICA/IFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQ1xuICAgICAgOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGVuYW50IGxvZ2luIG9wdGlvbiB3aGljaCBpcyBwcmVmZXJyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbnMgVGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB0ZW5hbnQncyBsb2dpbiBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIElUZW5hbnRMb2dpbk9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IHByZWZlcnJlZExvZ2luT3B0aW9uID0gdGVuYW50TG9naW5PcHRpb25zU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnMpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0UHJlZmVycmVkTG9naW5PcHRpb24obG9naW5PcHRpb25zOiBJVGVuYW50TG9naW5PcHRpb25bXSk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgY29uc3QgZGVmYXVsdEZhbGxiYWNrID0ge1xuICAgICAgdHlwZTogVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDLFxuICAgICAgdXNlck1hbmFnZW1lbnRTb3VyY2U6IFVzZXJNYW5hZ2VtZW50U291cmNlLklOVEVSTkFMXG4gICAgfTtcbiAgICBpZiAoIWxvZ2luT3B0aW9ucykge1xuICAgICAgcmV0dXJuIGRlZmF1bHRGYWxsYmFjaztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmlzaWJsZUxvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGhpcy5pc1Zpc2libGVPbkxvZ2luUGFnZSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZpc2libGVMb2dpbk9wdGlvbnMuZmluZCh0aGlzLmlzT2F1dGhJbnRlcm5hbCkgfHxcbiAgICAgICAgdmlzaWJsZUxvZ2luT3B0aW9ucy5maW5kKHRoaXMuaXNCYXNpYykgfHxcbiAgICAgICAgdmlzaWJsZUxvZ2luT3B0aW9ucy5maW5kKHRoaXMuaXNPYXV0aDIpIHx8XG4gICAgICAgIGRlZmF1bHRGYWxsYmFja1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBPYXV0aDIgbG9naW4gb3B0aW9uIGlmIGl0IGNhbiBiZSB1c2VkIGJ5IFVJLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb25zIFRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdGVuYW50J3MgbG9naW4gb3B0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgUmV0dXJucyBJVGVuYW50TG9naW5PcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDIgPSB0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmdldE9hdXRoMk9wdGlvbihsb2dpbk9wdGlvbnMpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0T2F1dGgyT3B0aW9uKGxvZ2luT3B0aW9uczogSVRlbmFudExvZ2luT3B0aW9uW10pOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbnMuZmluZChcbiAgICAgIGxvZ2luT3B0aW9uID0+IHRoaXMuaXNWaXNpYmxlT25Mb2dpblBhZ2UobG9naW5PcHRpb24pICYmIHRoaXMuaXNPYXV0aDIobG9naW5PcHRpb24pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIGlzIHZpc2libGUgb24gbG9naW4gcGFnZS5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9uIFRoZSB0ZW5hbnQgbG9naW4gb3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgbG9naW5PcHRpb25zVmlzaWJsZU9uTG9naW5QYWdlID0gbG9naW5PcHRpb25zLmZpbHRlcih0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmlzVmlzaWJsZU9uTG9naW5QYWdlKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzVmlzaWJsZU9uTG9naW5QYWdlKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udmlzaWJsZU9uTG9naW5QYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gdHlwZSBpcyAnT0FVVEgyX0lOVEVSTkFMJy5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9uIFRoZSB0ZW5hbnQgbG9naW4gb3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3Qgb2F1dGgySW50ZXJuYWxMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNPYXV0aEludGVybmFsKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzT2F1dGhJbnRlcm5hbChsb2dpbk9wdGlvbjogSVRlbmFudExvZ2luT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9uLnR5cGUgPT09IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJfSU5URVJOQUw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiB0eXBlIGlzICdCQVNJQycuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IGJhc2ljTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmlzQmFzaWMpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNCYXNpYyhsb2dpbk9wdGlvbjogSVRlbmFudExvZ2luT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9uLnR5cGUgPT09IFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIHR5cGUgaXMgJ09BVVRIMicgYW5kIGdyYW50VHlwZSBpcyAnQVVUSE9SSVpBVElPTl9DT0RFJy5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9uIFRoZSB0ZW5hbnQgbG9naW4gb3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3Qgb2F1dGgyTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLk9BVVRIMik7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc09hdXRoMihsb2dpbk9wdGlvbjogSVRlbmFudExvZ2luT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxvZ2luT3B0aW9uLnR5cGUgPT09IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDIgJiZcbiAgICAgIGxvZ2luT3B0aW9uLmdyYW50VHlwZSA9PT0gR3JhbnRUeXBlLkFVVEhPUklaQVRJT05fQ09ERVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFwcGxpY2F0aW9uIG9mIHR5cGUgTUlDUk9TRVJWSUNFIGlzIHN1YnNjcmliZWQgdG8gdGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKiBJdCBjaGVja3MgdGhlIGFwcGxpY2F0aW9uIHJlZmVyZW5jZXMgb2YgdGhlIGN1cnJlbnRUZW5hbnQgZnJvbSB0aGUgYXBwbGljYXRpb24gc3RhdGUuXG4gICAqIE5vIGFkZGl0aW9uYWwgcmVxdWVzdC5cbiAgICogQHBhcmFtIGlkZW50aWZpZXIgYXBwbGljYXRpb24gbmFtZSBvciBjb250ZXh0UGF0aFxuICAgKi9cbiAgaXNNaWNyb3NlcnZpY2VTdWJzY3JpYmVkSW5DdXJyZW50VGVuYW50KGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChpZGVudGlmaWVyPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBtaWNyb3NlcnZpY2VzID0gdGhpcy5nZXRTdWJzY3JpYmVkTWljcm9zZXJ2aWNlc0luQ3VycmVudFRlbmFudCgpO1xuICAgICAgcmV0dXJuIG1pY3Jvc2VydmljZXMuc29tZSgoeyBuYW1lLCBjb250ZXh0UGF0aCB9KSA9PlxuICAgICAgICBbbmFtZSwgY29udGV4dFBhdGhdLmluY2x1ZGVzKGlkZW50aWZpZXIpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwgYXBwbGljYXRpb24gb2YgdHlwZSBNSUNST1NFUlZJQ0Ugc3Vic2NyaWJlZCB0byB0aGUgY3VycmVudCB0ZW5hbnQuXG4gICAqIEl0IGNoZWNrcyB0aGUgYXBwbGljYXRpb24gcmVmZXJlbmNlcyBvZiB0aGUgY3VycmVudFRlbmFudCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZS5cbiAgICogTm8gYWRkaXRpb25hbCByZXF1ZXN0LlxuICAgKi9cbiAgZ2V0U3Vic2NyaWJlZE1pY3Jvc2VydmljZXNJbkN1cnJlbnRUZW5hbnQoKTogSUFwcGxpY2F0aW9uW10ge1xuICAgIGNvbnN0IHJlZmVyZW5jZXM6IElBcHBsaWNhdGlvblJlZmVyZW5jZVtdID0gZ2V0KFxuICAgICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudCxcbiAgICAgICd2YWx1ZS5hcHBsaWNhdGlvbnMucmVmZXJlbmNlcycsXG4gICAgICBbXVxuICAgICk7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXNcbiAgICAgIC5tYXAoYXBwUmVmID0+IGFwcFJlZi5hcHBsaWNhdGlvbilcbiAgICAgIC5maWx0ZXIoYXBwID0+IGFwcC50eXBlID09PSBBcHBsaWNhdGlvblR5cGUuTUlDUk9TRVJWSUNFKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzQXBwKGFwcHM6IElBcHBsaWNhdGlvbltdLCByZXF1aXJlZEFwcE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYXBwcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBhcHBzLnNvbWUoYXBwID0+IGFwcC5uYW1lID09PSByZXF1aXJlZEFwcE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc01hbmFnZW1lbnQoY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQpIHtcbiAgICByZXR1cm4gY3VycmVudFRlbmFudC5uYW1lID09PSB0aGlzLk1BTkFHRU1FTlQ7XG4gIH1cbn1cbiJdfQ==
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXVpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUtULHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFFNUQsbUZBQW1GO0FBRW5GLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1UsV0FBd0IsRUFDeEIsZUFBZ0M7UUFEaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBTGpDLGVBQVUsR0FBRyxZQUFZLENBQUM7UUFDMUIsZ0NBQTJCLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUFDO0lBSzVFLENBQUM7SUFFSjs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gs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R0FBRyxDQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFDbEMsK0JBQStCLEVBQy9CLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxVQUFVO2FBQ2QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQzthQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sTUFBTSxDQUFDLElBQW9CLEVBQUUsZUFBdUI7UUFDMUQsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDakIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLFlBQVksQ0FBQyxhQUE2QjtRQUNoRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNoRCxDQUFDOzs0R0FsUVUsZUFBZTtnSEFBZixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblR5cGUsXG4gIEdyYW50VHlwZSxcbiAgSUFwcGxpY2F0aW9uLFxuICBJQXBwbGljYXRpb25SZWZlcmVuY2UsXG4gIElDdXJyZW50VGVuYW50LFxuICBJVGVuYW50TG9naW5PcHRpb24sXG4gIFRlbmFudExvZ2luT3B0aW9uVHlwZSxcbiAgVXNlck1hbmFnZW1lbnRTb3VyY2UsXG4gIFVzZXJTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi4vY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuXG4vKiogVGhlIGhlbHBlciBVSSBzZXJ2aWNlIGZvciB0ZW5hbnQgcmVsYXRlZCBtZXRob2RzIGJ1aWx0IHVwb24gY2xpZW50IHNlcnZpY2VzLiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUZW5hbnRVaVNlcnZpY2Uge1xuICByZWFkb25seSBNQU5BR0VNRU5UID0gJ21hbmFnZW1lbnQnO1xuICByZWFkb25seSBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQgPSBQZXJtaXNzaW9ucy5ST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB0ZW5hbnRcbiAgICovXG4gIGdldCBjdXJyZW50VGVuYW50KCk6IElDdXJyZW50VGVuYW50IHtcbiAgICByZXR1cm4gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBjdXJyZW50IHRlbmFudCBpcyB0aGUgbWFuYWdlbWVudCB0ZW5hbnQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgY3VycmVudCB0ZW5hbnQgaXMgdGhlIG1hbmFnZW1lbnQgdGVuYW50LlxuICAgKi9cbiAgYXN5bmMgaXNNYW5hZ2VtZW50VGVuYW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmlzTWFuYWdlbWVudChjdXJyZW50VGVuYW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBjdXJyZW50IHRlbmFudCBpcyBhbiBlbnRlcnByaXNlIHRlbmFudC5cbiAgICogQW4gZW50ZXJwcmlzZSB0ZW5hbnQgaXMgYSB0ZW5hbnQgd2hpY2ggaGFzIHN1YnNjcmliZWQ6XG4gICAqIC0gYGJyYW5kaW5nYCBtaWNyb3NlcnZpY2Ugb3IgYGZlYXR1cmUtYnJhbmRpbmdgIGZlYXR1cmUgYXBwLFxuICAgKiAtIGBzc2xtYW5hZ2VtZW50YCBtaWNyb3NlcnZpY2UsXG4gICAqIC0gYGZlYXR1cmUtdXNlci1oaWVyYXJjaHlgIGZlYXR1cmUgYXBwLFxuICAgKiAtIGBmZWF0dXJlLWJyb2tlcmAgZmVhdHVyZSBhcHAuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2N1bXVsb2NpdHkuY29tL2d1aWRlcy91c2Vycy1ndWlkZS9lbnRlcnByaXNlLWVkaXRpb24vIGZvciBkZXRhaWxzIGFib3V0IHN1Y2ggdGVuYW50cy5cbiAgICpcbiAgICogQHJldHVybnMgVHJ1ZSwgaWYgY3VycmVudCB0ZW5hbnQgaXMgYW4gZW50ZXJwcmlzZSB0ZW5hbnQuXG4gICAqL1xuICBhc3luYyBpc0VudGVycHJpc2VUZW5hbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXZhaWxhYmxlQXBwc09mVXNlciA9IGF3YWl0IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRBcHBzT2ZVc2VyXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgY29uc3QgYnJhbmRpbmdBdmFpbGFibGUgPVxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2JyYW5kaW5nJykgfHxcbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdmZWF0dXJlLWJyYW5kaW5nJyk7XG5cbiAgICBjb25zdCByZXF1aXJlZEFwcHNBbmRGZWF0dXJlc0F2YWlsYWJsZSA9XG4gICAgICBicmFuZGluZ0F2YWlsYWJsZSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ3NzbG1hbmFnZW1lbnQnKSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtdXNlci1oaWVyYXJjaHknKSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtYnJva2VyJyk7XG5cbiAgICByZXR1cm4gcmVxdWlyZWRBcHBzQW5kRmVhdHVyZXNBdmFpbGFibGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcmVhZCBhY2Nlc3MgdG8gdGVuYW50cywgaS5lLjpcbiAgICogLSB0aGUgY3VycmVudCB0ZW5hbnQgY2FuIGNyZWF0ZSBzdWJ0ZW5hbnRzIG9yIGl0J3MgdGhlIG1hbmFnZW1lbnQgdGVuYW50LFxuICAgKiAtIHRoZSBjdXJyZW50IHVzZXIgaGFzIFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCByb2xlLlxuICAgKiBAcmV0dXJucyBUcnVlLCBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyByZWFkIGFjY2VzcyB0byB0ZW5hbnRzLlxuICAgKi9cbiAgY2FuUmVhZFRlbmFudHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaXNNYW5hZ2VtZW50KGN1cnJlbnRUZW5hbnQpIHx8IGN1cnJlbnRUZW5hbnQuYWxsb3dDcmVhdGVUZW5hbnRzKSAmJlxuICAgICAgdGhpcy51c2VyU2VydmljZS5oYXNSb2xlKGN1cnJlbnRVc2VyLCB0aGlzLlJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB0ZW5hbnQgcHJlZmVycmVkIGxvZ2luIG1vZGUuXG4gICAqL1xuICBnZXRDdXJyZW50VGVuYW50UHJlZmVycmVkTG9naW5PcHRpb24oKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbih0aGlzLmFwcFN0YXRlU2VydmljZS5zdGF0ZS5sb2dpbk9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB1c2VyIGxvZ2luIG1vZGUuXG4gICAqL1xuICBnZXRDdXJyZW50VXNlckxvZ2luTW9kZSgpOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUge1xuICAgIGNvbnN0IHByZWZlcnJlZExvZ2luT3B0aW9uID0gdGhpcy5nZXRDdXJyZW50VGVuYW50UHJlZmVycmVkTG9naW5PcHRpb24oKTtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmIChjdXJyZW50VXNlci5jdXN0b21Qcm9wZXJ0aWVzLnVzZXJPcmlnaW4gPT09ICdPQVVUSDInKSB7XG4gICAgICByZXR1cm4gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNCYXNpYyhwcmVmZXJyZWRMb2dpbk9wdGlvbilcbiAgICAgID8gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDXG4gICAgICA6IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJfSU5URVJOQUw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0ZW5hbnQgbG9naW4gb3B0aW9uIHdoaWNoIGlzIHByZWZlcnJlZC5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9ucyBUaGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHRlbmFudCdzIGxvZ2luIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFJldHVybnMgSVRlbmFudExvZ2luT3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb24gPSB0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbltdKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICBjb25zdCBkZWZhdWx0RmFsbGJhY2sgPSB7XG4gICAgICB0eXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUMsXG4gICAgICB1c2VyTWFuYWdlbWVudFNvdXJjZTogVXNlck1hbmFnZW1lbnRTb3VyY2UuSU5URVJOQUxcbiAgICB9O1xuICAgIGlmICghbG9naW5PcHRpb25zKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdEZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aXNpYmxlTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0aGlzLmlzVmlzaWJsZU9uTG9naW5QYWdlKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZUxvZ2luT3B0aW9ucy5maW5kKHRoaXMuaXNPYXV0aEludGVybmFsKSB8fFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc0Jhc2ljKSB8fFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc09hdXRoMikgfHxcbiAgICAgICAgZGVmYXVsdEZhbGxiYWNrXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIE9hdXRoMiBsb2dpbiBvcHRpb24gaWYgaXQgY2FuIGJlIHVzZWQgYnkgVUkuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbnMgVGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB0ZW5hbnQncyBsb2dpbiBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIElUZW5hbnRMb2dpbk9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMiA9IHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuZ2V0T2F1dGgyT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRPYXV0aDJPcHRpb24obG9naW5PcHRpb25zOiBJVGVuYW50TG9naW5PcHRpb25bXSk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9ucy5maW5kKFxuICAgICAgbG9naW5PcHRpb24gPT4gdGhpcy5pc1Zpc2libGVPbkxvZ2luUGFnZShsb2dpbk9wdGlvbikgJiYgdGhpcy5pc09hdXRoMihsb2dpbk9wdGlvbilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gaXMgdmlzaWJsZSBvbiBsb2dpbiBwYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBsb2dpbk9wdGlvbnNWaXNpYmxlT25Mb2dpblBhZ2UgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNWaXNpYmxlT25Mb2dpblBhZ2UpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNWaXNpYmxlT25Mb2dpblBhZ2UobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi52aXNpYmxlT25Mb2dpblBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiB0eXBlIGlzICdPQVVUSDJfSU5URVJOQUwnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDJJbnRlcm5hbExvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc09hdXRoSW50ZXJuYWwpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNPYXV0aEludGVybmFsKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIHR5cGUgaXMgJ0JBU0lDJy5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9uIFRoZSB0ZW5hbnQgbG9naW4gb3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgYmFzaWNMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNCYXNpYyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc0Jhc2ljKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gdHlwZSBpcyAnT0FVVEgyJyBhbmQgZ3JhbnRUeXBlIGlzICdBVVRIT1JJWkFUSU9OX0NPREUnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDJMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuT0FVVEgyKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzT2F1dGgyKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMiAmJlxuICAgICAgbG9naW5PcHRpb24uZ3JhbnRUeXBlID09PSBHcmFudFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYXBwbGljYXRpb24gb2YgdHlwZSBNSUNST1NFUlZJQ0UgaXMgc3Vic2NyaWJlZCB0byB0aGUgY3VycmVudCB0ZW5hbnQuXG4gICAqIEl0IGNoZWNrcyB0aGUgYXBwbGljYXRpb24gcmVmZXJlbmNlcyBvZiB0aGUgY3VycmVudFRlbmFudCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZS5cbiAgICogTm8gYWRkaXRpb25hbCByZXF1ZXN0LlxuICAgKiBAcGFyYW0gaWRlbnRpZmllciBhcHBsaWNhdGlvbiBuYW1lIG9yIGNvbnRleHRQYXRoXG4gICAqL1xuICBpc01pY3Jvc2VydmljZVN1YnNjcmliZWRJbkN1cnJlbnRUZW5hbnQoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlkZW50aWZpZXI/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1pY3Jvc2VydmljZXMgPSB0aGlzLmdldFN1YnNjcmliZWRNaWNyb3NlcnZpY2VzSW5DdXJyZW50VGVuYW50KCk7XG4gICAgICByZXR1cm4gbWljcm9zZXJ2aWNlcy5zb21lKCh7IG5hbWUsIGNvbnRleHRQYXRoIH0pID0+XG4gICAgICAgIFtuYW1lLCBjb250ZXh0UGF0aF0uaW5jbHVkZXMoaWRlbnRpZmllcilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBhcHBsaWNhdGlvbiBvZiB0eXBlIE1JQ1JPU0VSVklDRSBzdWJzY3JpYmVkIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogSXQgY2hlY2tzIHRoZSBhcHBsaWNhdGlvbiByZWZlcmVuY2VzIG9mIHRoZSBjdXJyZW50VGVuYW50IGZyb20gdGhlIGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKiBObyBhZGRpdGlvbmFsIHJlcXVlc3QuXG4gICAqL1xuICBnZXRTdWJzY3JpYmVkTWljcm9zZXJ2aWNlc0luQ3VycmVudFRlbmFudCgpOiBJQXBwbGljYXRpb25bXSB7XG4gICAgY29uc3QgcmVmZXJlbmNlczogSUFwcGxpY2F0aW9uUmVmZXJlbmNlW10gPSBnZXQoXG4gICAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LFxuICAgICAgJ3ZhbHVlLmFwcGxpY2F0aW9ucy5yZWZlcmVuY2VzJyxcbiAgICAgIFtdXG4gICAgKTtcbiAgICByZXR1cm4gcmVmZXJlbmNlc1xuICAgICAgLm1hcChhcHBSZWYgPT4gYXBwUmVmLmFwcGxpY2F0aW9uKVxuICAgICAgLmZpbHRlcihhcHAgPT4gYXBwLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBcHAoYXBwczogSUFwcGxpY2F0aW9uW10sIHJlcXVpcmVkQXBwTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcHBzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcHMuc29tZShhcHAgPT4gYXBwLm5hbWUgPT09IHJlcXVpcmVkQXBwTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTWFuYWdlbWVudChjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCkge1xuICAgIHJldHVybiBjdXJyZW50VGVuYW50Lm5hbWUgPT09IHRoaXMuTUFOQUdFTUVOVDtcbiAgfVxufVxuIl19
|