@sumaris-net/ngx-components 2.4.112 → 2.4.115
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/doc/changelog.md +4 -1
- package/esm2020/public_api.mjs +4 -1
- package/esm2020/src/app/admin/services/filter/person.filter.mjs +1 -1
- package/esm2020/src/app/admin/services/person.service.mjs +9 -1
- package/esm2020/src/app/core/form/entity/editor.class.mjs +7 -7
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +5 -2
- package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
- package/esm2020/src/app/core/graphql/graphql.service.mjs +4 -1
- package/esm2020/src/app/core/menu/menu.component.mjs +33 -94
- package/esm2020/src/app/core/menu/menu.model.mjs +45 -1
- package/esm2020/src/app/core/menu/menu.service.mjs +250 -7
- package/esm2020/src/app/core/menu/testing/menu-other.testing.mjs +52 -0
- package/esm2020/src/app/core/menu/testing/menu.testing.mjs +106 -0
- package/esm2020/src/app/core/menu/testing/menu.testing.module.mjs +79 -0
- package/esm2020/src/app/core/services/account.service.mjs +2 -2
- package/esm2020/src/app/core/services/crypto.service.mjs +14 -21
- package/esm2020/src/app/core/services/model/account.model.mjs +1 -1
- package/esm2020/src/app/core/services/model/config.model.mjs +1 -1
- package/esm2020/src/app/core/services/model/department.model.mjs +1 -1
- package/esm2020/src/app/core/services/model/peer.model.mjs +1 -1
- package/esm2020/src/app/core/services/model/person.model.mjs +1 -1
- package/esm2020/src/app/core/services/model/referential.model.mjs +1 -1
- package/esm2020/src/app/core/services/model/settings.model.mjs +1 -1
- package/esm2020/src/app/core/services/network.service.mjs +9 -6
- package/esm2020/src/app/core/services/platform.service.mjs +3 -2
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +1 -1
- package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +1 -1
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +1 -1
- package/esm2020/src/app/shared/file/json.utils.mjs +3 -3
- package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +1 -1
- package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -1
- package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +1 -1
- package/esm2020/src/app/shared/services/startable-service.class.mjs +1 -1
- package/esm2020/src/app/shared/shared.testing.module.mjs +15 -7
- package/esm2020/src/app/shared/toast/toast.testing.mjs +1 -1
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +1 -1
- package/esm2020/src/app/social/job/progression/job-progression.model.mjs +1 -1
- package/esm2020/src/app/social/message/message.model.mjs +1 -1
- package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
- package/esm2020/src/app/social/user-event/user-event.service.mjs +3 -2
- package/fesm2015/sumaris-net.ngx-components.mjs +1031 -589
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +1025 -589
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +8 -6
- package/public_api.d.ts +3 -0
- package/src/app/admin/services/person.service.d.ts +5 -0
- package/src/app/core/form/text-popover/text-popover.component.d.ts +2 -1
- package/src/app/core/menu/menu.component.d.ts +17 -13
- package/src/app/core/menu/menu.model.d.ts +30 -1
- package/src/app/core/menu/menu.service.d.ts +49 -3
- package/src/app/core/menu/testing/menu-other.testing.d.ts +13 -0
- package/src/app/core/menu/testing/menu.testing.d.ts +34 -0
- package/src/app/core/menu/testing/menu.testing.module.d.ts +12 -0
- package/src/app/core/services/account.service.d.ts +1 -1
- package/src/app/core/services/crypto.service.d.ts +7 -7
- package/src/app/core/services/network.service.d.ts +1 -1
- package/src/app/core/services/platform.service.d.ts +3 -2
- package/src/app/shared/shared.testing.module.d.ts +2 -1
- package/src/assets/i18n/en-US.json +1 -0
- package/src/assets/i18n/en.json +1 -0
- package/src/assets/i18n/fr.json +1 -0
|
@@ -425,4 +425,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
425
425
|
type: Inject,
|
|
426
426
|
args: [APP_LOCAL_STORAGE_TYPE_POLICIES]
|
|
427
427
|
}] }]; } });
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3N0b3JhZ2UvZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZFLE9BQU8sRUFBRSwyQkFBMkIsRUFBNEIsV0FBVyxFQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBQ2pJLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RyxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQVksTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQU85RSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsMEJBQTBCLENBQUMsQ0FBQztBQUszSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBa0M7SUFnQnJFLFlBQ1UsUUFBa0IsRUFDNEIsa0JBQXVDLEVBQ2hFLE9BQWlCLEVBQ2YsV0FBd0IsRUFDRixZQUF5QztRQUU5RixLQUFLLENBQUMs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QUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxpQkFBaUIsRUFBRTtnQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsaUJBQWlCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN0RjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUMvRjtZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQWpnQmUsNEJBQVksR0FBRyxRQUFTLENBQUE7QUFDeEIsNkJBQWEsR0FBRyxTQUFVLENBQUE7NEdBSC9CLGVBQWUsMENBa0JKLHdCQUF3Qiw2QkFDcEMsV0FBVyxhQUNYLFdBQVcsYUFDQywrQkFBK0I7Z0hBckIxQyxlQUFlLGNBREgsTUFBTTsyRkFDbEIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQW1CM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMzQyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmVyLCBtZXJnZSwgT2JzZXJ2YWJsZSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgZmlyc3QsIHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXR5LCBJRW50aXR5IH0gZnJvbSAnLi4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVOVElUSUVTX1NUT1JBR0VfS0VZX1BSRUZJWCwgRW50aXR5U3RvcmFnZUxvYWRPcHRpb25zLCBFbnRpdHlTdG9yZSwgRW50aXR5U3RvcmVUeXBlUG9saWN5IH0gZnJvbSAnLi9lbnRpdHktc3RvcmUuY2xhc3MnO1xuaW1wb3J0IHsgQVBQX1BST0dSRVNTX0JBUl9TRVJWSUNFLCBJUHJvZ3Jlc3NCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3Byb2dyZXNzLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGNoYWluUHJvbWlzZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgQVBQX1NUT1JBR0UsIElTdG9yYWdlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3N0b3JhZ2Uvc3RvcmFnZS51dGlscyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXMge1xuICBbX190eXBlbmFtZTogc3RyaW5nXTogRW50aXR5U3RvcmVUeXBlUG9saWN5O1xufVxuXG5leHBvcnQgY29uc3QgQVBQX0xPQ0FMX1NUT1JBR0VfVFlQRV9QT0xJQ0lFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXM+KCdsb2NhbFN0b3JhZ2VUeXBlUG9saWNpZXMnKTtcblxuZGVjbGFyZSBpbnRlcmZhY2UgRW50aXR5U3RvcmFnZU1hcCB7IFtrZXk6IHN0cmluZ106IEVudGl0eVN0b3JlPGFueSwgYW55PiB9XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEVudGl0aWVzU3RvcmFnZSBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8RW50aXR5U3RvcmFnZU1hcD4ge1xuXG4gIHN0YXRpYyByZWFkb25seSBUUkFTSF9QUkVGSVggPSAnVHJhc2gjJztcbiAgc3RhdGljIHJlYWRvbmx5IFJFTU9URV9QUkVGSVggPSAnUmVtb3RlIyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZVBvbGljaWVzOiBFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NhdmVUaW1lclBlcmlvZDtcblxuICBwcml2YXRlIF8kc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG4gIHByaXZhdGUgX2RpcnR5ID0gZmFsc2U7XG4gIHByaXZhdGUgX3NhdmluZyA9IGZhbHNlO1xuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlydHkgfHwgT2JqZWN0LnZhbHVlcyh0aGlzLl9kYXRhKS5zb21lKHN0b3JlID0+IHN0b3JlLmRpcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9QUk9HUkVTU19CQVJfU0VSVklDRSkgcHJpdmF0ZSBwcm9ncmVzc0JhclNlcnZpY2U6IElQcm9ncmVzc0JhclNlcnZpY2UsXG4gICAgQEluamVjdChBUFBfU1RPUkFHRSkgcHJpdmF0ZSBzdG9yYWdlOiBJU3RvcmFnZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0xPQ0FMX1NUT1JBR0VfVFlQRV9QT0xJQ0lFUykgdHlwZVBvbGljaWVzOiBFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXNcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmFnZSk7XG4gICAgdGhpcy5fdHlwZVBvbGljaWVzID0gdHlwZVBvbGljaWVzIHx8IHt9O1xuICAgIHRoaXMuX3NhdmVUaW1lclBlcmlvZCA9IGVudmlyb25tZW50LnN0b3JhZ2VTYXZlUGVyaW9kTXMgfHwgMTAwMDAgLyogPSAxMHMgKi87XG4gICAgdGhpcy5fZGF0YSA9IHt9O1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tlbnRpdGllcy1zdG9yYWdlXSBDcmVhdGluZyBzZXJ2aWNlJyk7XG4gIH1cblxuXG4gIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPEVudGl0eVN0b3JhZ2VNYXA+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuaW5mbyhgW2VudGl0aWVzLXN0b3JhZ2VdIFN0YXJ0aW5nIGVudGl0eSBzdG9yYWdlLi4uYCk7XG5cbiAgICAvLyBSZXN0b3JlIHN0b3Jlc1xuICAgIGF3YWl0IHRoaXMucmVzdG9yZUxvY2FsbHkoKTtcblxuICAgIC8vIFN0YXJ0IGEgc2F2ZSB0aW1lclxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICBtZXJnZShcbiAgICAgICAgdGhpcy5fJHNhdmUsXG4gICAgICAgIHRpbWVyKHRoaXMuX3NhdmVUaW1lclBlcmlvZCwgdGhpcy5fc2F2ZVRpbWVyUGVyaW9kKVxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBBdm9pZCB0byBtYW55IGNhbGwgKGUuZy4gd2hlbiAkc2F2ZSBBTkQgdGltZXIgYXJlIHRyaWdnZXJlZFxuICAgICAgICAgIHRocm90dGxlVGltZSh0aGlzLl9zYXZlVGltZXJQZXJpb2QpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN0b3JlTG9jYWxseSh7c2tpcElmUHJpc3RpbmU6IHRydWV9KSlcbiAgICApO1xuXG4gICAgLy8gU2F2ZSwgd2hlbiBwbGF0Zm9ybSBpcyBpbiBwYXVzZVxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLnBsYXRmb3JtLnBhdXNlLnN1YnNjcmliZShhc3luYyAoKSAgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zb2xlLmluZm8oYFtlbnRpdGllcy1zdG9yYWdlXSBQbGF0Zm9ybSB3aWxsIHBhdXNlOiBzYXZpbmcuLi5gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZUxvY2FsbHkoe3NraXBJZlByaXN0aW5lOiB0cnVlfSk7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2VudGl0aWVzLXN0b3JhZ2VdIFBsYXRmb3JtIHdpbGwgcGF1c2U6IHNhdmluZyBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc29sZS5pbmZvKGBbZW50aXRpZXMtc3RvcmFnZV0gU3RhcnRpbmcgW09LXSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcblxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdG9wKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmVMb2NhbGx5KHtza2lwSWZQcmlzdGluZTogdHJ1ZX0pO1xuICB9XG5cbiAgd2F0Y2hBbGw8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5TmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT86IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0Qnk/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFzaD86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyPzogKFQpID0+IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM/OiBFbnRpdHlTdG9yYWdlTG9hZE9wdGlvbnMpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICAvLyBNYWtlIHN1cmUgc3RvcmUgaXMgcmVhZHlcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkge1xuICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHRoaXMucmVhZHkoKSlcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMud2F0Y2hBbGw8VD4oZW50aXR5TmFtZSwgdmFyaWFibGVzLCBvcHRzKSkpOyAvLyBMb29wXG4gICAgfVxuXG4gICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmluY3JlYXNlKCk7XG4gICAgY29uc3Qgc3RvcmVOYW1lID0gdmFyaWFibGVzICYmIHZhcmlhYmxlcy50cmFzaCA/IChFbnRpdGllc1N0b3JhZ2UuVFJBU0hfUFJFRklYICsgZW50aXR5TmFtZSkgOiBlbnRpdHlOYW1lO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4oc3RvcmVOYW1lLCB7Y3JlYXRlOiB0cnVlfSlcbiAgICAgIC53YXRjaEFsbCh2YXJpYWJsZXMsIG9wdHMpO1xuXG4gICAgcmVzdWx0LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsb2FkQWxsPFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGVudGl0eU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM/OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydEJ5Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcj86IChUKSA9PiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cz86IEVudGl0eVN0b3JhZ2VMb2FkT3B0aW9ucyk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuXG4gICAgLy8gTWFrZSBzdXJlIHN0b3JlIGlzIHJlYWR5XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uaW5jcmVhc2UoKTtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXN0b3JhZ2VdIExvYWRpbmcgJHtlbnRpdHlOYW1lfS4uLmApO1xuXG4gICAgICBjb25zdCBlbnRpdHlTdG9yZSA9IHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4oZW50aXR5TmFtZSwge2NyZWF0ZTogZmFsc2V9KTtcbiAgICAgIGlmICghZW50aXR5U3RvcmUpIHJldHVybiB7ZGF0YTogW10sIHRvdGFsOiAwfTsgLy8gTm8gc3RvcmUgZm9yIHRoaXMgZW50aXR5IG5hbWVcblxuICAgICAgcmV0dXJuIGVudGl0eVN0b3JlLmxvYWRBbGwodmFyaWFibGVzLCBvcHRzKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uZGVjcmVhc2UoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkPFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGlkOiBudW1iZXIsIGVudGl0eU5hbWU6IHN0cmluZywgb3B0cz86IEVudGl0eVN0b3JhZ2VMb2FkT3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uaW5jcmVhc2UoKTtcblxuICAgICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KGVudGl0eU5hbWUsIHtjcmVhdGU6IGZhbHNlfSk7XG4gICAgICBpZiAoIWVudGl0eVN0b3JlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGF3YWl0IGVudGl0eVN0b3JlLmxvYWQoaWQsIG9wdHMpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5leHRWYWx1ZShlbnRpdHlPck5hbWU6IHN0cmluZyB8IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlTdG9yZSh0aGlzLmRldGVjdEVudGl0eU5hbWUoZW50aXR5T3JOYW1lKSkubmV4dFZhbHVlKCk7XG4gIH1cblxuICBhc3luYyBuZXh0VmFsdWVzKGVudGl0eU9yTmFtZTogc3RyaW5nIHwgYW55LCBlbnRpdHlDb3VudDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgdGhpcy5fZGlydHkgPSB0cnVlO1xuICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0aGlzLmRldGVjdEVudGl0eU5hbWUoZW50aXR5T3JOYW1lKTtcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0RW50aXR5U3RvcmUoZW50aXR5TmFtZSk7XG4gICAgY29uc3QgZmlyc3RWYWx1ZSA9IHN0b3JlLm5leHRWYWx1ZSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXR5Q291bnQgLSAxOyBpKyspIHtcbiAgICAgIHN0b3JlLm5leHRWYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy1zdG9yYWdlXSBSZXNlcnZpbmcgcmFuZ2UgWyR7Zmlyc3RWYWx1ZX0sJHtzdG9yZS5jdXJyZW50VmFsdWUoKX1dIGZvciAke2VudGl0eU5hbWV9J3Mgc2VxdWVuY2VgKTtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZTtcbiAgfVxuXG4gIGFzeW5jIGN1cnJlbnRWYWx1ZShlbnRpdHlPck5hbWU6IHN0cmluZyB8IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLmdldEVudGl0eVN0b3JlKHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHlPck5hbWUpKS5jdXJyZW50VmFsdWUoKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmU8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5OiBULCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VD4ge1xuICAgIGlmICghZW50aXR5KSByZXR1cm47IC8vIHNraXBcblxuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmluY3JlYXNlKCk7XG5cbiAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHN0b3JlTmFtZSA9IG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lIHx8IHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHkpO1xuICAgICAgdGhpcy5nZXRFbnRpdHlTdG9yZTxUPihzdG9yZU5hbWUpXG4gICAgICAgIC5zYXZlKGVudGl0eSwgb3B0cyk7XG5cbiAgICAgIC8vIEFzayB0byBzYXZlXG4gICAgICB0aGlzLl8kc2F2ZS5lbWl0KCk7XG5cbiAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmRlY3JlYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbDxUIGV4dGVuZHMgRW50aXR5PFQ+PihlbnRpdGllczogVFtdLCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gICAgcmVzZXQ/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmIChpc0VtcHR5QXJyYXkoZW50aXRpZXMpICYmICghb3B0cyB8fCBvcHRzLnJlc2V0ICE9PSB0cnVlKSkgcmV0dXJuIGVudGl0aWVzOyAvLyBTa2lwIChub3RoaW5nIHRvIHNhdmUpXG5cbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5pbmNyZWFzZSgpO1xuXG4gICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XG4gICAgICBjb25zdCBlbnRpdHlOYW1lID0gb3B0cyAmJiBvcHRzLmVudGl0eU5hbWUgfHwgdGhpcy5kZXRlY3RFbnRpdHlOYW1lKGVudGl0aWVzWzBdKTtcbiAgICAgIHJldHVybiB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KGVudGl0eU5hbWUpLnNhdmVBbGwoZW50aXRpZXMsIG9wdHMpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZTxUIGV4dGVuZHMgRW50aXR5PFQsIElEPiwgSUQgPSBudW1iZXI+KGVudGl0eTogVCwgb3B0cz86IHtcbiAgICBlbnRpdHlOYW1lPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFlbnRpdHkpIHJldHVybiB1bmRlZmluZWQ7IC8vIHNraXBcblxuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWxldGVCeUlkKGVudGl0eS5pZCwge1xuICAgICAgLi4ub3B0cyxcbiAgICAgIGVudGl0eU5hbWU6IG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lIHx8IHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHkpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVCeUlkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiwgSUQgPSBudW1iZXI+KGlkOiBJRCwgb3B0czoge1xuICAgIGVudGl0eU5hbWU6IHN0cmluZztcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGlmICghb3B0cyB8fCBpc05pbE9yQmxhbmsob3B0cy5lbnRpdHlOYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFxcJ29wdHNcXCcgb3IgXFwnZW50aXR5TmFtZVxcJycpO1xuICAgIC8vaWYgKGlkID49IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpZCBhIGxvY2FsIGVudGl0eSAobm90IGEgbmVnYXRpdmUgbnVtYmVyKTogJyArIGlkKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uaW5jcmVhc2UoKTtcbiAgICAgIGNvbnN0IGVudGl0eVN0b3JlID0gdGhpcy5nZXRFbnRpdHlTdG9yZTxULCBJRD4ob3B0cy5lbnRpdHlOYW1lLCB7Y3JlYXRlOiBmYWxzZX0pO1xuICAgICAgaWYgKCFlbnRpdHlTdG9yZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgZGVsZXRlZEVudGl0eSA9IGVudGl0eVN0b3JlLmRlbGV0ZShpZCwgb3B0cyk7XG5cbiAgICAgIC8vIElmIHNvbWV0aGluZyBkZWxldGVkXG4gICAgICBpZiAoZGVsZXRlZEVudGl0eSkge1xuXG4gICAgICAgIC8vIE1hcmsgYXMgZGlydHlcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xuXG4gICAgICAgIC8vIEFzayB0byBzYXZlXG4gICAgICAgIHRoaXMuXyRzYXZlLmVtaXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRlbGV0ZWRFbnRpdHk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmRlY3JlYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWFueTxUIGV4dGVuZHMgRW50aXR5PFQ+PihpZHM6IG51bWJlcltdLCBvcHRzOiB7XG4gICAgZW50aXR5TmFtZTogc3RyaW5nO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICBpZiAoIW9wdHMgfHwgaXNOaWxPckJsYW5rKG9wdHMuZW50aXR5TmFtZSkpIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhcmd1bWVudCBcXCdvcHRzXFwnIG9yIFxcJ29wdHMuZW50aXR5TmFtZVxcJycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5pbmNyZWFzZSgpO1xuICAgICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KG9wdHMuZW50aXR5TmFtZSwge2NyZWF0ZTogZmFsc2V9KTtcbiAgICAgIGlmICghZW50aXR5U3RvcmUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIERvIGRlbGV0aW9uXG4gICAgICBjb25zdCBkZWxldGVkRW50aXRpZXMgPSBlbnRpdHlTdG9yZS5kZWxldGVNYW55KGlkcywgb3B0cyk7XG5cbiAgICAgIC8vIElmIHNvbWV0aGluZyBkZWxldGVkXG4gICAgICBpZiAoZGVsZXRlZEVudGl0aWVzLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAvLyBNYXJrIGFzIGRpcnR5XG4gICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcblxuICAgICAgICAvLyBNYXJrIGFzIHNhdmVkIG5lZWRcbiAgICAgICAgdGhpcy5fJHNhdmUuZW1pdCgpO1xuXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWxldGVkRW50aXRpZXM7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uZGVjcmVhc2UoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVGcm9tVHJhc2g8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5OiBULCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIWVudGl0eSkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gc2tpcFxuXG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZyb21UcmFzaEJ5SWQoZW50aXR5LmlkLCB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgZW50aXR5TmFtZTogb3B0cyAmJiBvcHRzLmVudGl0eU5hbWUgfHwgdGhpcy5kZXRlY3RFbnRpdHlOYW1lKGVudGl0eSlcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZyb21UcmFzaEJ5SWQ8VCBleHRlbmRzIEVudGl0eTxUPj4oaWQ6IG51bWJlciwgb3B0czoge1xuICAgIGVudGl0eU5hbWU6IHN0cmluZztcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgaWYgKCFvcHRzIHx8IGlzTmlsT3JCbGFuayhvcHRzLmVudGl0eU5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXFwnb3B0c1xcJyBvciBcXCdlbnRpdHlOYW1lXFwnJyk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWxldGVCeUlkKGlkLCB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgZW50aXR5TmFtZTogRW50aXRpZXNTdG9yYWdlLlRSQVNIX1BSRUZJWCArIG9wdHMuZW50aXR5TmFtZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbW92ZVRvVHJhc2g8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5OiBULCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VD4ge1xuICAgIGlmICghZW50aXR5KSByZXR1cm4gdW5kZWZpbmVkOyAvLyBza2lwXG5cbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgY29uc3QgZW50aXR5TmFtZSA9IG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lIHx8IHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHkpO1xuXG4gICAgLy8gRGVsZXRlIGVudGl0eSBieSBpZCwgaWYgZXhpc3RzXG4gICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KGVudGl0eU5hbWUpO1xuICAgIGlmIChlbnRpdHlTdG9yZSkgZW50aXR5U3RvcmUuZGVsZXRlKGVudGl0eS5pZCwgb3B0cyk7XG5cbiAgICAvLyBDbGVhbiBpZCAoYSBuZXcgaWQgd2lsbCBiZSBzZXQgYnkgdGhlIHRyYXNoIHN0b3JlKVxuICAgIGVudGl0eS5pZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIEFkZCB0byB0cmFzaFxuICAgIGNvbnN0IHRyYXNoTmFtZSA9IEVudGl0aWVzU3RvcmFnZS5UUkFTSF9QUkVGSVggKyBlbnRpdHlOYW1lO1xuICAgIHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4odHJhc2hOYW1lKS5zYXZlKGVudGl0eSwgb3B0cyk7XG5cbiAgICB0aGlzLl8kc2F2ZS5lbWl0KCk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgbW92ZU1hbnlUb1RyYXNoPFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGlkczogbnVtYmVyW10sIG9wdHM6IHtcbiAgICBlbnRpdHlOYW1lOiBzdHJpbmc7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGlmICghb3B0cyB8fCBpc05pbE9yQmxhbmsob3B0cy5lbnRpdHlOYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFxcJ29wdHMuZW50aXR5TmFtZVxcJycpO1xuXG4gICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KG9wdHMuZW50aXR5TmFtZSwge2NyZWF0ZTogZmFsc2V9KTtcbiAgICBpZiAoIWVudGl0eVN0b3JlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8gRG8gZGVsZXRpb25cbiAgICBjb25zdCBkZWxldGVkRW50aXRpZXMgPSBlbnRpdHlTdG9yZS5kZWxldGVNYW55KGlkcywgb3B0cyk7XG5cbiAgICAvLyBJZiBzb21ldGhpbmcgZGVsZXRlZFxuICAgIGlmIChkZWxldGVkRW50aXRpZXMubGVuZ3RoID4gMCkge1xuXG4gICAgICAvLyBDbGVhbiBpZHMgKG5ldyBpZHMgd2lsbCBiZSBzZXQgYnkgdGhlIHRyYXNoIHN0b3JlKVxuICAgICAgZGVsZXRlZEVudGl0aWVzLmZvckVhY2goZSA9PiBlLmlkID0gdW5kZWZpbmVkKTtcblxuICAgICAgY29uc3QgdHJhc2hOYW1lID0gRW50aXRpZXNTdG9yYWdlLlRSQVNIX1BSRUZJWCArIG9wdHMuZW50aXR5TmFtZTtcbiAgICAgIHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4odHJhc2hOYW1lLCB7Y3JlYXRlOiB0cnVlfSlcbiAgICAgICAgLnNhdmVBbGwoZGVsZXRlZEVudGl0aWVzLCBvcHRzKTtcblxuICAgICAgLy8gTWFyayBhcyBkaXJ0eVxuICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xuXG4gICAgICAvLyBNYXJrIGFzIHNhdmUgbmVlZFxuICAgICAgdGhpcy5fJHNhdmUuZW1pdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkRW50aXRpZXM7XG4gIH1cblxuICBhc3luYyBzYXZlVG9UcmFzaDxUIGV4dGVuZHMgRW50aXR5PFQ+PihlbnRpdHk6IFQsIG9wdHM/OiB7XG4gICAgZW50aXR5TmFtZT86IHN0cmluZztcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFlbnRpdHkpIHJldHVybiB1bmRlZmluZWQ7IC8vIHNraXBcblxuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICBjb25zdCBlbnRpdHlOYW1lID0gb3B0cyAmJiBvcHRzLmVudGl0eU5hbWUgfHwgdGhpcy5kZXRlY3RFbnRpdHlOYW1lKGVudGl0eSk7XG4gICAgY29uc3QgdHJhc2hOYW1lID0gRW50aXRpZXNTdG9yYWdlLlRSQVNIX1BSRUZJWCArIGVudGl0eU5hbWU7XG4gICAgdGhpcy5nZXRFbnRpdHlTdG9yZTxUPih0cmFzaE5hbWUpLnNhdmUoZW50aXR5LCBvcHRzKTtcblxuICAgIHRoaXMuXyRzYXZlLmVtaXQoKTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc3luYyBjbGVhclRyYXNoKGVudGl0eU5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICBjb25zdCB0cmFzaE5hbWUgPSBFbnRpdGllc1N0b3JhZ2UuVFJBU0hfUFJFRklYICsgZW50aXR5TmFtZTtcbiAgICBjb25zdCBlbnRpdHlTdG9yZSA9IHRoaXMuZ2V0RW50aXR5U3RvcmUodHJhc2hOYW1lLCB7Y3JlYXRlOiBmYWxzZX0pO1xuICAgIGlmICghZW50aXR5U3RvcmUpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgZW50aXR5U3RvcmUucmVzZXQoKTtcbiAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XG5cbiAgICB0aGlzLl8kc2F2ZS5lbWl0KCk7XG4gIH1cblxuICBwZXJzaXN0KG9wdHMgPSB7c2tpcElmUHJpc3RpbmU6IHRydWV9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVMb2NhbGx5KG9wdHMpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXR5U3RvcmU8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LCBJRCA9IG51bWJlcj4obmFtZTogc3RyaW5nLCBvcHRzPzoge1xuICAgIGNyZWF0ZT86IGJvb2xlYW47XG4gIH0pOiBFbnRpdHlTdG9yZTxULCBJRD4ge1xuICAgIGxldCBzdG9yZSA9IHRoaXMuX2RhdGFbbmFtZV07XG4gICAgaWYgKCFzdG9yZSAmJiAoIW9wdHMgfHwgb3B0cy5jcmVhdGUgIT09IGZhbHNlKSkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtc3RvcmFnZV0gQ3JlYXRpbmcgc3RvcmUgJHtuYW1lfWApO1xuICAgICAgY29uc3QgdHlwZVBvbGljeSA9IHRoaXMuX3R5cGVQb2xpY2llc1tuYW1lXTtcbiAgICAgIHN0b3JlID0gbmV3IEVudGl0eVN0b3JlPFQsIElEPihuYW1lLCB0aGlzLnN0b3JhZ2UsIHR5cGVQb2xpY3kpO1xuICAgICAgdGhpcy5fZGF0YVtuYW1lXSA9IHN0b3JlO1xuICAgIH1cbiAgICByZXR1cm4gc3RvcmU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGV0ZWN0RW50aXR5TmFtZShlbnRpdHlPck5hbWU6IHN0cmluZyB8IEVudGl0eTxhbnksIGFueT4pOiBzdHJpbmcge1xuICAgIGlmICghZW50aXR5T3JOYW1lKSB0aHJvdyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCBlbnRpdHlOYW1lIG9mIG9iamVjdDogJyArIGVudGl0eU9yTmFtZSk7XG4gICAgaWYgKHR5cGVvZiBlbnRpdHlPck5hbWUgPT09ICdzdHJpbmcnKSByZXR1cm4gZW50aXR5T3JOYW1lO1xuICAgIGlmIChlbnRpdHlPck5hbWUuX190eXBlbmFtZSkge1xuICAgICAgcmV0dXJuIGVudGl0eU9yTmFtZS5fX3R5cGVuYW1lO1xuICAgIH1cbiAgICByZXR1cm4gZW50aXR5T3JOYW1lLmNvbnN0cnVjdG9yLm5hbWUgKyAnVk8nO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc3RvcmVMb2NhbGx5KCkge1xuXG4gICAgY29uc3QgZW50aXR5TmFtZXMgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEVOVElUSUVTX1NUT1JBR0VfS0VZX1BSRUZJWCk7XG4gICAgaWYgKCFlbnRpdHlOYW1lcykgcmV0dXJuO1xuXG4gICAgY29uc3Qgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuaW5mbygnW2VudGl0aWVzLXN0b3JhZ2VdIFJlc3RvcmluZyBlbnRpdGllcy4uLicpO1xuICAgIGNvbnN0IGVudGl0aWVzQ291bnQgPSAoYXdhaXQgUHJvbWlzZS5hbGw8bnVtYmVyPihcbiAgICAgIGVudGl0eU5hbWVzXG4gICAgICAgIC5tYXAobmFtZSA9PiB0aGlzLmdldEVudGl0eVN0b3JlPGFueT4obmFtZSkpXG4gICAgICAgIC5tYXAoKHN0b3JlOiBFbnRpdHlTdG9yZTxhbnk+KSA9PiBzdG9yZS5yZXN0b3JlKCkpKVxuICAgICkucmVkdWNlKChyZXMsIGNvdW50KSA9PiAocmVzICsgY291bnQpLCAwKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXN0b3JhZ2VdIFJlc3RvcmluZyBlbnRpdGllcyBbT0tdICR7ZW50aXRpZXNDb3VudH0gZW50aXRpZXMgZm91bmQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RvcmVMb2NhbGx5KG9wdHMgPSB7c2tpcElmUHJpc3RpbmU6IHRydWV9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKG9wdHMuc2tpcElmUHJpc3RpbmUgJiYgIXRoaXMuZGlydHkpIHJldHVybjsgLy8gc2tpcFxuXG4gICAgLy8gU2F2aW5nIHByb2dyZXNzOiByZXBvcnQgdGhpcyBzYXZlIGxhdGVyXG4gICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZW50aXRpZXMtc3RvcmFnZV0gUHJldmlvdXMgcGVyc2lzdCBub3QgZmluaXNoZWQuIFdhaXRpbmcuLi4nKTtcbiAgICAgIHRoaXMuXyRzYXZlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuX2RpcnR5ID0gZmFsc2U7XG4gICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmluY3JlYXNlKCk7XG4gICAgY29uc3QgZW50aXR5TmFtZXMgPSB0aGlzLl9kYXRhICYmIE9iamVjdC5rZXlzKHRoaXMuX2RhdGEpIHx8IFtdO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tlbnRpdGllcy1zdG9yYWdlXSBQZXJzaXN0aW5nLi4uJyk7XG5cbiAgICBsZXQgY3VycmVudEVudGl0eU5hbWU7XG4gICAgcmV0dXJuIGNoYWluUHJvbWlzZXMoXG4gICAgICBlbnRpdHlOYW1lcy5tYXAoZW50aXR5TmFtZSA9PiAoKSA9PiB7XG4gICAgICAgICAgY3VycmVudEVudGl0eU5hbWUgPSBlbnRpdHlOYW1lO1xuICAgICAgICAgIGNvbnN0IGVudGl0eVN0b3JlID0gdGhpcy5nZXRFbnRpdHlTdG9yZShlbnRpdHlOYW1lLCB7Y3JlYXRlOiBmYWxzZX0pO1xuXG4gICAgICAgICAgaWYgKCFlbnRpdHlTdG9yZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbZW50aXRpZXMtc3RvcmFnZV0gUGVyc2lzdGluZyAke2VudGl0eU5hbWV9OiBzdG9yZSBub3QgZm91bmQhYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU0tpcCBzdG9yZSBpZiBwcmlzdGluZVxuICAgICAgICAgIGlmIChvcHRzLnNraXBJZlByaXN0aW5lICYmICFlbnRpdHlTdG9yZS5kaXJ0eSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgICAgICAgLy8gUGVyc2lzdCBzdG9yZVxuICAgICAgICAgIHJldHVybiBlbnRpdHlTdG9yZS5wZXJzaXN0KG9wdHMpXG4gICAgICAgICAgICAudGhlbihjb3VudCA9PiB7XG4gICAgICAgICAgICAgIC8vIElmIG5vIGVudGl0eSBmb3VuZCwgcmVtb3ZlIGZyb20gdGhlIGVudGl0eSBuYW1lcyBhcnJheVxuICAgICAgICAgICAgICBpZiAoIWNvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50aXR5TmFtZUluZGV4ID0gZW50aXR5TmFtZXMuZmluZEluZGV4KGUgPT4gZSA9PT0gZW50aXR5TmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eU5hbWVJbmRleCAhPT0gLTEpIGVudGl0eU5hbWVzLnNwbGljZShlbnRpdHlOYW1lSW5kZXgsIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3VycmVudEVudGl0eU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIGlzRW1wdHlBcnJheShlbnRpdHlOYW1lcykgP1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZShFTlRJVElFU19TVE9SQUdFX0tFWV9QUkVGSVgpIDpcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoRU5USVRJRVNfU1RPUkFHRV9LRVlfUFJFRklYLCBlbnRpdHlOYW1lcyk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy1zdG9yYWdlXSBQZXJzaXN0aW5nIFtPS10gJHtlbnRpdHlOYW1lcy5sZW5ndGh9IHN0b3JlcyBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXMuLi5gKTtcbiAgICAgICAgdGhpcy5fc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICB0aGlzLl9zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmRlY3JlYXNlKCk7XG4gICAgICAgIGlmIChjdXJyZW50RW50aXR5TmFtZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy1zdG9yYWdlXSBFcnJvciB3aGlsZSBwZXJzaXN0aW5nICR7Y3VycmVudEVudGl0eU5hbWV9YCwgZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBbZW50aXRpZXMtc3RvcmFnZV0gRXJyb3Igd2hpbGUgcGVyc2lzdGluZzogJHtlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSk7XG4gIH1cblxufVxuIl19
|
|
428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3N0b3JhZ2UvZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZFLE9BQU8sRUFBRSwyQkFBMkIsRUFBNEIsV0FBVyxFQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBQ2pJLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RyxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQVksTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQU85RSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsMEJBQTBCLENBQUMsQ0FBQztBQUszSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBa0M7SUFnQnJFLFlBQ1UsUUFBa0IsRUFDNEIsa0JBQXVDLEVBQ2hFLE9BQWlCLEVBQ2YsV0FBd0IsRUFDRixZQUF5QztRQUU5RixLQUFLLENBQUMs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QUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxpQkFBaUIsRUFBRTtnQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsaUJBQWlCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN0RjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUMvRjtZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQWpnQmUsNEJBQVksR0FBRyxRQUFRLENBQUM7QUFDeEIsNkJBQWEsR0FBRyxTQUFTLENBQUM7NEdBSC9CLGVBQWUsMENBa0JKLHdCQUF3Qiw2QkFDcEMsV0FBVyxhQUNYLFdBQVcsYUFDQywrQkFBK0I7Z0hBckIxQyxlQUFlLGNBREgsTUFBTTsyRkFDbEIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQW1CM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMzQyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmVyLCBtZXJnZSwgT2JzZXJ2YWJsZSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgZmlyc3QsIHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXR5LCBJRW50aXR5IH0gZnJvbSAnLi4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVOVElUSUVTX1NUT1JBR0VfS0VZX1BSRUZJWCwgRW50aXR5U3RvcmFnZUxvYWRPcHRpb25zLCBFbnRpdHlTdG9yZSwgRW50aXR5U3RvcmVUeXBlUG9saWN5IH0gZnJvbSAnLi9lbnRpdHktc3RvcmUuY2xhc3MnO1xuaW1wb3J0IHsgQVBQX1BST0dSRVNTX0JBUl9TRVJWSUNFLCBJUHJvZ3Jlc3NCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3Byb2dyZXNzLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGNoYWluUHJvbWlzZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgQVBQX1NUT1JBR0UsIElTdG9yYWdlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3N0b3JhZ2Uvc3RvcmFnZS51dGlscyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXMge1xuICBbX190eXBlbmFtZTogc3RyaW5nXTogRW50aXR5U3RvcmVUeXBlUG9saWN5O1xufVxuXG5leHBvcnQgY29uc3QgQVBQX0xPQ0FMX1NUT1JBR0VfVFlQRV9QT0xJQ0lFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXM+KCdsb2NhbFN0b3JhZ2VUeXBlUG9saWNpZXMnKTtcblxuZGVjbGFyZSBpbnRlcmZhY2UgRW50aXR5U3RvcmFnZU1hcCB7IFtrZXk6IHN0cmluZ106IEVudGl0eVN0b3JlPGFueSwgYW55PiB9XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEVudGl0aWVzU3RvcmFnZSBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8RW50aXR5U3RvcmFnZU1hcD4ge1xuXG4gIHN0YXRpYyByZWFkb25seSBUUkFTSF9QUkVGSVggPSAnVHJhc2gjJztcbiAgc3RhdGljIHJlYWRvbmx5IFJFTU9URV9QUkVGSVggPSAnUmVtb3RlIyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZVBvbGljaWVzOiBFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NhdmVUaW1lclBlcmlvZDtcblxuICBwcml2YXRlIF8kc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG4gIHByaXZhdGUgX2RpcnR5ID0gZmFsc2U7XG4gIHByaXZhdGUgX3NhdmluZyA9IGZhbHNlO1xuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlydHkgfHwgT2JqZWN0LnZhbHVlcyh0aGlzLl9kYXRhKS5zb21lKHN0b3JlID0+IHN0b3JlLmRpcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9QUk9HUkVTU19CQVJfU0VSVklDRSkgcHJpdmF0ZSBwcm9ncmVzc0JhclNlcnZpY2U6IElQcm9ncmVzc0JhclNlcnZpY2UsXG4gICAgQEluamVjdChBUFBfU1RPUkFHRSkgcHJpdmF0ZSBzdG9yYWdlOiBJU3RvcmFnZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0xPQ0FMX1NUT1JBR0VfVFlQRV9QT0xJQ0lFUykgdHlwZVBvbGljaWVzOiBFbnRpdGllc1N0b3JhZ2VUeXBlUG9saWNpZXNcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmFnZSk7XG4gICAgdGhpcy5fdHlwZVBvbGljaWVzID0gdHlwZVBvbGljaWVzIHx8IHt9O1xuICAgIHRoaXMuX3NhdmVUaW1lclBlcmlvZCA9IGVudmlyb25tZW50LnN0b3JhZ2VTYXZlUGVyaW9kTXMgfHwgMTAwMDAgLyogPSAxMHMgKi87XG4gICAgdGhpcy5fZGF0YSA9IHt9O1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tlbnRpdGllcy1zdG9yYWdlXSBDcmVhdGluZyBzZXJ2aWNlJyk7XG4gIH1cblxuXG4gIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPEVudGl0eVN0b3JhZ2VNYXA+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuaW5mbyhgW2VudGl0aWVzLXN0b3JhZ2VdIFN0YXJ0aW5nIGVudGl0eSBzdG9yYWdlLi4uYCk7XG5cbiAgICAvLyBSZXN0b3JlIHN0b3Jlc1xuICAgIGF3YWl0IHRoaXMucmVzdG9yZUxvY2FsbHkoKTtcblxuICAgIC8vIFN0YXJ0IGEgc2F2ZSB0aW1lclxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICBtZXJnZShcbiAgICAgICAgdGhpcy5fJHNhdmUsXG4gICAgICAgIHRpbWVyKHRoaXMuX3NhdmVUaW1lclBlcmlvZCwgdGhpcy5fc2F2ZVRpbWVyUGVyaW9kKVxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBBdm9pZCB0byBtYW55IGNhbGwgKGUuZy4gd2hlbiAkc2F2ZSBBTkQgdGltZXIgYXJlIHRyaWdnZXJlZFxuICAgICAgICAgIHRocm90dGxlVGltZSh0aGlzLl9zYXZlVGltZXJQZXJpb2QpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN0b3JlTG9jYWxseSh7c2tpcElmUHJpc3RpbmU6IHRydWV9KSlcbiAgICApO1xuXG4gICAgLy8gU2F2ZSwgd2hlbiBwbGF0Zm9ybSBpcyBpbiBwYXVzZVxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLnBsYXRmb3JtLnBhdXNlLnN1YnNjcmliZShhc3luYyAoKSAgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zb2xlLmluZm8oYFtlbnRpdGllcy1zdG9yYWdlXSBQbGF0Zm9ybSB3aWxsIHBhdXNlOiBzYXZpbmcuLi5gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZUxvY2FsbHkoe3NraXBJZlByaXN0aW5lOiB0cnVlfSk7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2VudGl0aWVzLXN0b3JhZ2VdIFBsYXRmb3JtIHdpbGwgcGF1c2U6IHNhdmluZyBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc29sZS5pbmZvKGBbZW50aXRpZXMtc3RvcmFnZV0gU3RhcnRpbmcgW09LXSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcblxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdG9wKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmVMb2NhbGx5KHtza2lwSWZQcmlzdGluZTogdHJ1ZX0pO1xuICB9XG5cbiAgd2F0Y2hBbGw8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5TmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT86IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0Qnk/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFzaD86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyPzogKFQpID0+IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM/OiBFbnRpdHlTdG9yYWdlTG9hZE9wdGlvbnMpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICAvLyBNYWtlIHN1cmUgc3RvcmUgaXMgcmVhZHlcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkge1xuICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHRoaXMucmVhZHkoKSlcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMud2F0Y2hBbGw8VD4oZW50aXR5TmFtZSwgdmFyaWFibGVzLCBvcHRzKSkpOyAvLyBMb29wXG4gICAgfVxuXG4gICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmluY3JlYXNlKCk7XG4gICAgY29uc3Qgc3RvcmVOYW1lID0gdmFyaWFibGVzICYmIHZhcmlhYmxlcy50cmFzaCA/IChFbnRpdGllc1N0b3JhZ2UuVFJBU0hfUFJFRklYICsgZW50aXR5TmFtZSkgOiBlbnRpdHlOYW1lO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4oc3RvcmVOYW1lLCB7Y3JlYXRlOiB0cnVlfSlcbiAgICAgIC53YXRjaEFsbCh2YXJpYWJsZXMsIG9wdHMpO1xuXG4gICAgcmVzdWx0LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsb2FkQWxsPFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGVudGl0eU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM/OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydEJ5Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcj86IChUKSA9PiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cz86IEVudGl0eVN0b3JhZ2VMb2FkT3B0aW9ucyk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuXG4gICAgLy8gTWFrZSBzdXJlIHN0b3JlIGlzIHJlYWR5XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uaW5jcmVhc2UoKTtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXN0b3JhZ2VdIExvYWRpbmcgJHtlbnRpdHlOYW1lfS4uLmApO1xuXG4gICAgICBjb25zdCBlbnRpdHlTdG9yZSA9IHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4oZW50aXR5TmFtZSwge2NyZWF0ZTogZmFsc2V9KTtcbiAgICAgIGlmICghZW50aXR5U3RvcmUpIHJldHVybiB7ZGF0YTogW10sIHRvdGFsOiAwfTsgLy8gTm8gc3RvcmUgZm9yIHRoaXMgZW50aXR5IG5hbWVcblxuICAgICAgcmV0dXJuIGVudGl0eVN0b3JlLmxvYWRBbGwodmFyaWFibGVzLCBvcHRzKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uZGVjcmVhc2UoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkPFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGlkOiBudW1iZXIsIGVudGl0eU5hbWU6IHN0cmluZywgb3B0cz86IEVudGl0eVN0b3JhZ2VMb2FkT3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uaW5jcmVhc2UoKTtcblxuICAgICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KGVudGl0eU5hbWUsIHtjcmVhdGU6IGZhbHNlfSk7XG4gICAgICBpZiAoIWVudGl0eVN0b3JlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGF3YWl0IGVudGl0eVN0b3JlLmxvYWQoaWQsIG9wdHMpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5leHRWYWx1ZShlbnRpdHlPck5hbWU6IHN0cmluZyB8IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlTdG9yZSh0aGlzLmRldGVjdEVudGl0eU5hbWUoZW50aXR5T3JOYW1lKSkubmV4dFZhbHVlKCk7XG4gIH1cblxuICBhc3luYyBuZXh0VmFsdWVzKGVudGl0eU9yTmFtZTogc3RyaW5nIHwgYW55LCBlbnRpdHlDb3VudDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgdGhpcy5fZGlydHkgPSB0cnVlO1xuICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0aGlzLmRldGVjdEVudGl0eU5hbWUoZW50aXR5T3JOYW1lKTtcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0RW50aXR5U3RvcmUoZW50aXR5TmFtZSk7XG4gICAgY29uc3QgZmlyc3RWYWx1ZSA9IHN0b3JlLm5leHRWYWx1ZSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXR5Q291bnQgLSAxOyBpKyspIHtcbiAgICAgIHN0b3JlLm5leHRWYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy1zdG9yYWdlXSBSZXNlcnZpbmcgcmFuZ2UgWyR7Zmlyc3RWYWx1ZX0sJHtzdG9yZS5jdXJyZW50VmFsdWUoKX1dIGZvciAke2VudGl0eU5hbWV9J3Mgc2VxdWVuY2VgKTtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZTtcbiAgfVxuXG4gIGFzeW5jIGN1cnJlbnRWYWx1ZShlbnRpdHlPck5hbWU6IHN0cmluZyB8IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHJldHVybiB0aGlzLmdldEVudGl0eVN0b3JlKHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHlPck5hbWUpKS5jdXJyZW50VmFsdWUoKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmU8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5OiBULCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VD4ge1xuICAgIGlmICghZW50aXR5KSByZXR1cm47IC8vIHNraXBcblxuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmluY3JlYXNlKCk7XG5cbiAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHN0b3JlTmFtZSA9IG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lIHx8IHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHkpO1xuICAgICAgdGhpcy5nZXRFbnRpdHlTdG9yZTxUPihzdG9yZU5hbWUpXG4gICAgICAgIC5zYXZlKGVudGl0eSwgb3B0cyk7XG5cbiAgICAgIC8vIEFzayB0byBzYXZlXG4gICAgICB0aGlzLl8kc2F2ZS5lbWl0KCk7XG5cbiAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmRlY3JlYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbDxUIGV4dGVuZHMgRW50aXR5PFQ+PihlbnRpdGllczogVFtdLCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gICAgcmVzZXQ/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmIChpc0VtcHR5QXJyYXkoZW50aXRpZXMpICYmICghb3B0cyB8fCBvcHRzLnJlc2V0ICE9PSB0cnVlKSkgcmV0dXJuIGVudGl0aWVzOyAvLyBTa2lwIChub3RoaW5nIHRvIHNhdmUpXG5cbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5pbmNyZWFzZSgpO1xuXG4gICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XG4gICAgICBjb25zdCBlbnRpdHlOYW1lID0gb3B0cyAmJiBvcHRzLmVudGl0eU5hbWUgfHwgdGhpcy5kZXRlY3RFbnRpdHlOYW1lKGVudGl0aWVzWzBdKTtcbiAgICAgIHJldHVybiB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KGVudGl0eU5hbWUpLnNhdmVBbGwoZW50aXRpZXMsIG9wdHMpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZTxUIGV4dGVuZHMgRW50aXR5PFQsIElEPiwgSUQgPSBudW1iZXI+KGVudGl0eTogVCwgb3B0cz86IHtcbiAgICBlbnRpdHlOYW1lPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFlbnRpdHkpIHJldHVybiB1bmRlZmluZWQ7IC8vIHNraXBcblxuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWxldGVCeUlkKGVudGl0eS5pZCwge1xuICAgICAgLi4ub3B0cyxcbiAgICAgIGVudGl0eU5hbWU6IG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lIHx8IHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHkpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVCeUlkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiwgSUQgPSBudW1iZXI+KGlkOiBJRCwgb3B0czoge1xuICAgIGVudGl0eU5hbWU6IHN0cmluZztcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGlmICghb3B0cyB8fCBpc05pbE9yQmxhbmsob3B0cy5lbnRpdHlOYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFxcJ29wdHNcXCcgb3IgXFwnZW50aXR5TmFtZVxcJycpO1xuICAgIC8vaWYgKGlkID49IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpZCBhIGxvY2FsIGVudGl0eSAobm90IGEgbmVnYXRpdmUgbnVtYmVyKTogJyArIGlkKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uaW5jcmVhc2UoKTtcbiAgICAgIGNvbnN0IGVudGl0eVN0b3JlID0gdGhpcy5nZXRFbnRpdHlTdG9yZTxULCBJRD4ob3B0cy5lbnRpdHlOYW1lLCB7Y3JlYXRlOiBmYWxzZX0pO1xuICAgICAgaWYgKCFlbnRpdHlTdG9yZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgZGVsZXRlZEVudGl0eSA9IGVudGl0eVN0b3JlLmRlbGV0ZShpZCwgb3B0cyk7XG5cbiAgICAgIC8vIElmIHNvbWV0aGluZyBkZWxldGVkXG4gICAgICBpZiAoZGVsZXRlZEVudGl0eSkge1xuXG4gICAgICAgIC8vIE1hcmsgYXMgZGlydHlcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xuXG4gICAgICAgIC8vIEFzayB0byBzYXZlXG4gICAgICAgIHRoaXMuXyRzYXZlLmVtaXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRlbGV0ZWRFbnRpdHk7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmRlY3JlYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWFueTxUIGV4dGVuZHMgRW50aXR5PFQ+PihpZHM6IG51bWJlcltdLCBvcHRzOiB7XG4gICAgZW50aXR5TmFtZTogc3RyaW5nO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICBpZiAoIW9wdHMgfHwgaXNOaWxPckJsYW5rKG9wdHMuZW50aXR5TmFtZSkpIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhcmd1bWVudCBcXCdvcHRzXFwnIG9yIFxcJ29wdHMuZW50aXR5TmFtZVxcJycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5pbmNyZWFzZSgpO1xuICAgICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KG9wdHMuZW50aXR5TmFtZSwge2NyZWF0ZTogZmFsc2V9KTtcbiAgICAgIGlmICghZW50aXR5U3RvcmUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIERvIGRlbGV0aW9uXG4gICAgICBjb25zdCBkZWxldGVkRW50aXRpZXMgPSBlbnRpdHlTdG9yZS5kZWxldGVNYW55KGlkcywgb3B0cyk7XG5cbiAgICAgIC8vIElmIHNvbWV0aGluZyBkZWxldGVkXG4gICAgICBpZiAoZGVsZXRlZEVudGl0aWVzLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAvLyBNYXJrIGFzIGRpcnR5XG4gICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcblxuICAgICAgICAvLyBNYXJrIGFzIHNhdmVkIG5lZWRcbiAgICAgICAgdGhpcy5fJHNhdmUuZW1pdCgpO1xuXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWxldGVkRW50aXRpZXM7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICB0aGlzLnByb2dyZXNzQmFyU2VydmljZT8uZGVjcmVhc2UoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVGcm9tVHJhc2g8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5OiBULCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIWVudGl0eSkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gc2tpcFxuXG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZyb21UcmFzaEJ5SWQoZW50aXR5LmlkLCB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgZW50aXR5TmFtZTogb3B0cyAmJiBvcHRzLmVudGl0eU5hbWUgfHwgdGhpcy5kZXRlY3RFbnRpdHlOYW1lKGVudGl0eSlcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZyb21UcmFzaEJ5SWQ8VCBleHRlbmRzIEVudGl0eTxUPj4oaWQ6IG51bWJlciwgb3B0czoge1xuICAgIGVudGl0eU5hbWU6IHN0cmluZztcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgaWYgKCFvcHRzIHx8IGlzTmlsT3JCbGFuayhvcHRzLmVudGl0eU5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXFwnb3B0c1xcJyBvciBcXCdlbnRpdHlOYW1lXFwnJyk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWxldGVCeUlkKGlkLCB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgZW50aXR5TmFtZTogRW50aXRpZXNTdG9yYWdlLlRSQVNIX1BSRUZJWCArIG9wdHMuZW50aXR5TmFtZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbW92ZVRvVHJhc2g8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5OiBULCBvcHRzPzoge1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VD4ge1xuICAgIGlmICghZW50aXR5KSByZXR1cm4gdW5kZWZpbmVkOyAvLyBza2lwXG5cbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgY29uc3QgZW50aXR5TmFtZSA9IG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lIHx8IHRoaXMuZGV0ZWN0RW50aXR5TmFtZShlbnRpdHkpO1xuXG4gICAgLy8gRGVsZXRlIGVudGl0eSBieSBpZCwgaWYgZXhpc3RzXG4gICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KGVudGl0eU5hbWUpO1xuICAgIGlmIChlbnRpdHlTdG9yZSkgZW50aXR5U3RvcmUuZGVsZXRlKGVudGl0eS5pZCwgb3B0cyk7XG5cbiAgICAvLyBDbGVhbiBpZCAoYSBuZXcgaWQgd2lsbCBiZSBzZXQgYnkgdGhlIHRyYXNoIHN0b3JlKVxuICAgIGVudGl0eS5pZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIEFkZCB0byB0cmFzaFxuICAgIGNvbnN0IHRyYXNoTmFtZSA9IEVudGl0aWVzU3RvcmFnZS5UUkFTSF9QUkVGSVggKyBlbnRpdHlOYW1lO1xuICAgIHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4odHJhc2hOYW1lKS5zYXZlKGVudGl0eSwgb3B0cyk7XG5cbiAgICB0aGlzLl8kc2F2ZS5lbWl0KCk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgbW92ZU1hbnlUb1RyYXNoPFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGlkczogbnVtYmVyW10sIG9wdHM6IHtcbiAgICBlbnRpdHlOYW1lOiBzdHJpbmc7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGlmICghb3B0cyB8fCBpc05pbE9yQmxhbmsob3B0cy5lbnRpdHlOYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFxcJ29wdHMuZW50aXR5TmFtZVxcJycpO1xuXG4gICAgY29uc3QgZW50aXR5U3RvcmUgPSB0aGlzLmdldEVudGl0eVN0b3JlPFQ+KG9wdHMuZW50aXR5TmFtZSwge2NyZWF0ZTogZmFsc2V9KTtcbiAgICBpZiAoIWVudGl0eVN0b3JlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8gRG8gZGVsZXRpb25cbiAgICBjb25zdCBkZWxldGVkRW50aXRpZXMgPSBlbnRpdHlTdG9yZS5kZWxldGVNYW55KGlkcywgb3B0cyk7XG5cbiAgICAvLyBJZiBzb21ldGhpbmcgZGVsZXRlZFxuICAgIGlmIChkZWxldGVkRW50aXRpZXMubGVuZ3RoID4gMCkge1xuXG4gICAgICAvLyBDbGVhbiBpZHMgKG5ldyBpZHMgd2lsbCBiZSBzZXQgYnkgdGhlIHRyYXNoIHN0b3JlKVxuICAgICAgZGVsZXRlZEVudGl0aWVzLmZvckVhY2goZSA9PiBlLmlkID0gdW5kZWZpbmVkKTtcblxuICAgICAgY29uc3QgdHJhc2hOYW1lID0gRW50aXRpZXNTdG9yYWdlLlRSQVNIX1BSRUZJWCArIG9wdHMuZW50aXR5TmFtZTtcbiAgICAgIHRoaXMuZ2V0RW50aXR5U3RvcmU8VD4odHJhc2hOYW1lLCB7Y3JlYXRlOiB0cnVlfSlcbiAgICAgICAgLnNhdmVBbGwoZGVsZXRlZEVudGl0aWVzLCBvcHRzKTtcblxuICAgICAgLy8gTWFyayBhcyBkaXJ0eVxuICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xuXG4gICAgICAvLyBNYXJrIGFzIHNhdmUgbmVlZFxuICAgICAgdGhpcy5fJHNhdmUuZW1pdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkRW50aXRpZXM7XG4gIH1cblxuICBhc3luYyBzYXZlVG9UcmFzaDxUIGV4dGVuZHMgRW50aXR5PFQ+PihlbnRpdHk6IFQsIG9wdHM/OiB7XG4gICAgZW50aXR5TmFtZT86IHN0cmluZztcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFlbnRpdHkpIHJldHVybiB1bmRlZmluZWQ7IC8vIHNraXBcblxuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICBjb25zdCBlbnRpdHlOYW1lID0gb3B0cyAmJiBvcHRzLmVudGl0eU5hbWUgfHwgdGhpcy5kZXRlY3RFbnRpdHlOYW1lKGVudGl0eSk7XG4gICAgY29uc3QgdHJhc2hOYW1lID0gRW50aXRpZXNTdG9yYWdlLlRSQVNIX1BSRUZJWCArIGVudGl0eU5hbWU7XG4gICAgdGhpcy5nZXRFbnRpdHlTdG9yZTxUPih0cmFzaE5hbWUpLnNhdmUoZW50aXR5LCBvcHRzKTtcblxuICAgIHRoaXMuXyRzYXZlLmVtaXQoKTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc3luYyBjbGVhclRyYXNoKGVudGl0eU5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICBjb25zdCB0cmFzaE5hbWUgPSBFbnRpdGllc1N0b3JhZ2UuVFJBU0hfUFJFRklYICsgZW50aXR5TmFtZTtcbiAgICBjb25zdCBlbnRpdHlTdG9yZSA9IHRoaXMuZ2V0RW50aXR5U3RvcmUodHJhc2hOYW1lLCB7Y3JlYXRlOiBmYWxzZX0pO1xuICAgIGlmICghZW50aXR5U3RvcmUpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgZW50aXR5U3RvcmUucmVzZXQoKTtcbiAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XG5cbiAgICB0aGlzLl8kc2F2ZS5lbWl0KCk7XG4gIH1cblxuICBwZXJzaXN0KG9wdHMgPSB7c2tpcElmUHJpc3RpbmU6IHRydWV9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVMb2NhbGx5KG9wdHMpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXR5U3RvcmU8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LCBJRCA9IG51bWJlcj4obmFtZTogc3RyaW5nLCBvcHRzPzoge1xuICAgIGNyZWF0ZT86IGJvb2xlYW47XG4gIH0pOiBFbnRpdHlTdG9yZTxULCBJRD4ge1xuICAgIGxldCBzdG9yZSA9IHRoaXMuX2RhdGFbbmFtZV07XG4gICAgaWYgKCFzdG9yZSAmJiAoIW9wdHMgfHwgb3B0cy5jcmVhdGUgIT09IGZhbHNlKSkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtc3RvcmFnZV0gQ3JlYXRpbmcgc3RvcmUgJHtuYW1lfWApO1xuICAgICAgY29uc3QgdHlwZVBvbGljeSA9IHRoaXMuX3R5cGVQb2xpY2llc1tuYW1lXTtcbiAgICAgIHN0b3JlID0gbmV3IEVudGl0eVN0b3JlPFQsIElEPihuYW1lLCB0aGlzLnN0b3JhZ2UsIHR5cGVQb2xpY3kpO1xuICAgICAgdGhpcy5fZGF0YVtuYW1lXSA9IHN0b3JlO1xuICAgIH1cbiAgICByZXR1cm4gc3RvcmU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGV0ZWN0RW50aXR5TmFtZShlbnRpdHlPck5hbWU6IHN0cmluZyB8IEVudGl0eTxhbnksIGFueT4pOiBzdHJpbmcge1xuICAgIGlmICghZW50aXR5T3JOYW1lKSB0aHJvdyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCBlbnRpdHlOYW1lIG9mIG9iamVjdDogJyArIGVudGl0eU9yTmFtZSk7XG4gICAgaWYgKHR5cGVvZiBlbnRpdHlPck5hbWUgPT09ICdzdHJpbmcnKSByZXR1cm4gZW50aXR5T3JOYW1lO1xuICAgIGlmIChlbnRpdHlPck5hbWUuX190eXBlbmFtZSkge1xuICAgICAgcmV0dXJuIGVudGl0eU9yTmFtZS5fX3R5cGVuYW1lO1xuICAgIH1cbiAgICByZXR1cm4gZW50aXR5T3JOYW1lLmNvbnN0cnVjdG9yLm5hbWUgKyAnVk8nO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc3RvcmVMb2NhbGx5KCkge1xuXG4gICAgY29uc3QgZW50aXR5TmFtZXMgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KEVOVElUSUVTX1NUT1JBR0VfS0VZX1BSRUZJWCk7XG4gICAgaWYgKCFlbnRpdHlOYW1lcykgcmV0dXJuO1xuXG4gICAgY29uc3Qgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuaW5mbygnW2VudGl0aWVzLXN0b3JhZ2VdIFJlc3RvcmluZyBlbnRpdGllcy4uLicpO1xuICAgIGNvbnN0IGVudGl0aWVzQ291bnQgPSAoYXdhaXQgUHJvbWlzZS5hbGw8bnVtYmVyPihcbiAgICAgIGVudGl0eU5hbWVzXG4gICAgICAgIC5tYXAobmFtZSA9PiB0aGlzLmdldEVudGl0eVN0b3JlPGFueT4obmFtZSkpXG4gICAgICAgIC5tYXAoKHN0b3JlOiBFbnRpdHlTdG9yZTxhbnk+KSA9PiBzdG9yZS5yZXN0b3JlKCkpKVxuICAgICkucmVkdWNlKChyZXMsIGNvdW50KSA9PiAocmVzICsgY291bnQpLCAwKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXN0b3JhZ2VdIFJlc3RvcmluZyBlbnRpdGllcyBbT0tdICR7ZW50aXRpZXNDb3VudH0gZW50aXRpZXMgZm91bmQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RvcmVMb2NhbGx5KG9wdHMgPSB7c2tpcElmUHJpc3RpbmU6IHRydWV9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKG9wdHMuc2tpcElmUHJpc3RpbmUgJiYgIXRoaXMuZGlydHkpIHJldHVybjsgLy8gc2tpcFxuXG4gICAgLy8gU2F2aW5nIHByb2dyZXNzOiByZXBvcnQgdGhpcyBzYXZlIGxhdGVyXG4gICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZW50aXRpZXMtc3RvcmFnZV0gUHJldmlvdXMgcGVyc2lzdCBub3QgZmluaXNoZWQuIFdhaXRpbmcuLi4nKTtcbiAgICAgIHRoaXMuXyRzYXZlLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuX2RpcnR5ID0gZmFsc2U7XG4gICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmluY3JlYXNlKCk7XG4gICAgY29uc3QgZW50aXR5TmFtZXMgPSB0aGlzLl9kYXRhICYmIE9iamVjdC5rZXlzKHRoaXMuX2RhdGEpIHx8IFtdO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tlbnRpdGllcy1zdG9yYWdlXSBQZXJzaXN0aW5nLi4uJyk7XG5cbiAgICBsZXQgY3VycmVudEVudGl0eU5hbWU7XG4gICAgcmV0dXJuIGNoYWluUHJvbWlzZXMoXG4gICAgICBlbnRpdHlOYW1lcy5tYXAoZW50aXR5TmFtZSA9PiAoKSA9PiB7XG4gICAgICAgICAgY3VycmVudEVudGl0eU5hbWUgPSBlbnRpdHlOYW1lO1xuICAgICAgICAgIGNvbnN0IGVudGl0eVN0b3JlID0gdGhpcy5nZXRFbnRpdHlTdG9yZShlbnRpdHlOYW1lLCB7Y3JlYXRlOiBmYWxzZX0pO1xuXG4gICAgICAgICAgaWYgKCFlbnRpdHlTdG9yZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbZW50aXRpZXMtc3RvcmFnZV0gUGVyc2lzdGluZyAke2VudGl0eU5hbWV9OiBzdG9yZSBub3QgZm91bmQhYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU0tpcCBzdG9yZSBpZiBwcmlzdGluZVxuICAgICAgICAgIGlmIChvcHRzLnNraXBJZlByaXN0aW5lICYmICFlbnRpdHlTdG9yZS5kaXJ0eSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgICAgICAgLy8gUGVyc2lzdCBzdG9yZVxuICAgICAgICAgIHJldHVybiBlbnRpdHlTdG9yZS5wZXJzaXN0KG9wdHMpXG4gICAgICAgICAgICAudGhlbihjb3VudCA9PiB7XG4gICAgICAgICAgICAgIC8vIElmIG5vIGVudGl0eSBmb3VuZCwgcmVtb3ZlIGZyb20gdGhlIGVudGl0eSBuYW1lcyBhcnJheVxuICAgICAgICAgICAgICBpZiAoIWNvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50aXR5TmFtZUluZGV4ID0gZW50aXR5TmFtZXMuZmluZEluZGV4KGUgPT4gZSA9PT0gZW50aXR5TmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eU5hbWVJbmRleCAhPT0gLTEpIGVudGl0eU5hbWVzLnNwbGljZShlbnRpdHlOYW1lSW5kZXgsIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgY3VycmVudEVudGl0eU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIGlzRW1wdHlBcnJheShlbnRpdHlOYW1lcykgP1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZShFTlRJVElFU19TVE9SQUdFX0tFWV9QUkVGSVgpIDpcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoRU5USVRJRVNfU1RPUkFHRV9LRVlfUFJFRklYLCBlbnRpdHlOYW1lcyk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy1zdG9yYWdlXSBQZXJzaXN0aW5nIFtPS10gJHtlbnRpdHlOYW1lcy5sZW5ndGh9IHN0b3JlcyBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXMuLi5gKTtcbiAgICAgICAgdGhpcy5fc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlPy5kZWNyZWFzZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICB0aGlzLl9zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2U/LmRlY3JlYXNlKCk7XG4gICAgICAgIGlmIChjdXJyZW50RW50aXR5TmFtZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy1zdG9yYWdlXSBFcnJvciB3aGlsZSBwZXJzaXN0aW5nICR7Y3VycmVudEVudGl0eU5hbWV9YCwgZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBbZW50aXRpZXMtc3RvcmFnZV0gRXJyb3Igd2hpbGUgcGVyc2lzdGluZzogJHtlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSk7XG4gIH1cblxufVxuIl19
|
|
@@ -20,4 +20,4 @@ ReferentialFilter = __decorate([
|
|
|
20
20
|
EntityClass({ typename: 'ReferentialFilterVO' })
|
|
21
21
|
], ReferentialFilter);
|
|
22
22
|
export { ReferentialFilter };
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbnRpYWwtZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3Rlc3RpbmcvcmVmZXJlbnRpYWwtZmlsdGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRCxXQUFXO0FBRUosSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBa0IsU0FBUSxZQUE0QztJQU1qRixVQUFVLENBQUMsTUFBVyxFQUFFLElBQVU7UUFDaEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3RDLENBQUM7SUFFUyxXQUFXO1FBQ25CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksWUFBWTtZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUFuQlksaUJBQWlCO0lBRDdCLFdBQVcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0dBQ2xDLGlCQUFpQixDQW1CN0I7U0FuQlksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbnRpdHlDbGFzc30gZnJvbSAnLi4vbW9kZWwvZW50aXR5LmRlY29yYXRvcnMnO1xuaW1wb3J0IHtFbnRpdHlGaWx0ZXJ9IGZyb20gJy4uL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQge1JlZmVyZW50aWFsfSBmcm9tICcuLi9tb2RlbC9yZWZlcmVudGlhbC5tb2RlbCc7XG5pbXBvcnQge0VudGl0eVV0aWxzfSBmcm9tICcuLi9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJGbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdSZWZlcmVudGlhbEZpbHRlclZPJ30pXG5leHBvcnQgY2xhc3MgUmVmZXJlbnRpYWxGaWx0ZXIgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8UmVmZXJlbnRpYWxGaWx0ZXIsIFJlZmVyZW50aWFsPiB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gUmVmZXJlbnRpYWxGaWx0ZXI7XG5cbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc291cmNlLnNlYXJjaFRleHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48UmVmZXJlbnRpYWw+W10ge1xuICAgIGNvbnN0IHRhcmdldCA9IHN1cGVyLmJ1aWxkRmlsdGVyKCk7XG5cbiAgICBjb25zdCBzZWFyY2hUZXh0Rm4gPSBFbnRpdHlVdGlscy5zZWFyY2hUZXh0RmlsdGVyKFsnbGFiZWwnLCAnbmFtZSddLCB0aGlzLnNlYXJjaFRleHQpO1xuICAgIGlmIChzZWFyY2hUZXh0Rm4pIHRhcmdldC5wdXNoKHNlYXJjaFRleHRGbik7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG59XG4iXX0=
|
|
@@ -31,7 +31,7 @@ export class TableSelectColumnsComponent {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
TableSelectColumnsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableSelectColumnsComponent, deps: [{ token: i1.NavParams }, { token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
TableSelectColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableSelectColumnsComponent, selector: "table-select-columns", inputs: { columns: "columns", canHideColumns: "canHideColumns" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i1.IonReorderGroup, selector: "ion-reorder-group", inputs: ["disabled"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
34
|
+
TableSelectColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableSelectColumnsComponent, selector: "table-select-columns", inputs: { columns: "columns", canHideColumns: "canHideColumns" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i1.IonReorderGroup, selector: "ion-reorder-group", inputs: ["disabled"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableSelectColumnsComponent, decorators: [{
|
|
36
36
|
type: Component,
|
|
37
37
|
args: [{ selector: 'table-select-columns', template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n" }]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FilesUtils } from './file.utils';
|
|
2
|
-
import { decodeUTF8 } from 'tweetnacl-util';
|
|
3
2
|
import { FileResponse } from '../upload-file/upload-file.model';
|
|
4
3
|
import { filter, map } from 'rxjs/operators';
|
|
5
4
|
import { HttpEventType } from '@angular/common/http';
|
|
6
5
|
import { isNil, isNotNil } from '../functions';
|
|
6
|
+
import { stringToU8a } from '@polkadot/util';
|
|
7
7
|
//@dynamic
|
|
8
8
|
export class JsonUtils {
|
|
9
9
|
static exportToFile(content, opts) {
|
|
@@ -27,7 +27,7 @@ export class JsonUtils {
|
|
|
27
27
|
...opts,
|
|
28
28
|
};
|
|
29
29
|
// Create text content
|
|
30
|
-
const arrayUt8 =
|
|
30
|
+
const arrayUt8 = stringToU8a(JSON.stringify(content));
|
|
31
31
|
const blob = new Blob([arrayUt8], { type: opts.type });
|
|
32
32
|
blob['lastModifiedDate'] = (new Date()).toISOString();
|
|
33
33
|
blob['name'] = opts.filename;
|
|
@@ -48,4 +48,4 @@ export class JsonUtils {
|
|
|
48
48
|
}), filter(isNotNil));
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ZpbGUvanNvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBWSxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsVUFBVTtBQUNWLE1BQU0sT0FBTyxTQUFTO0lBRXBCLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBWSxFQUNaLElBSUM7UUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxDQUFDLGdCQUFnQjtRQUU1QyxzQkFBc0I7UUFDdEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdFLGdCQUFnQjtRQUNoQixVQUFVLENBQUMsZUFBZSxDQUN4QixXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLEdBQUcsSUFBSTtTQUNSLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQVksRUFDWixJQUdDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFFckUsSUFBSSxHQUFHO1lBQ0wsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixRQUFRLEVBQUUsYUFBYTtZQUN2QixHQUFHLElBQUk7U0FDUixDQUFDO1FBRUYsc0JBQXNCO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU3QixPQUFhLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBVSxJQUFVLEVBQUUsSUFBMkI7UUFDL0QsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO2FBQy9DLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRTtnQkFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFDLENBQUM7YUFDdkI7aUJBQ0ksSUFBSSxDQUFDLFlBQVksWUFBWSxFQUFDO2dCQUNqQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBTSxDQUFDO2dCQUNuQyxPQUFPLElBQUksWUFBWSxDQUFJLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7YUFDMUM7UUFDSCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsUUFBUSxDQUFDLENBQ2pCLENBQUM7SUFDTixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbGVzVXRpbHN9IGZyb20gJy4vZmlsZS51dGlscyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGaWxlRXZlbnQsIEZpbGVSZXNwb25zZX0gZnJvbSAnLi4vdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUubW9kZWwnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtIdHRwRXZlbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2lzTmlsLCBpc05vdE5pbH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7c3RyaW5nVG9VOGF9IGZyb20gJ0Bwb2xrYWRvdC91dGlsJztcblxuLy9AZHluYW1pY1xuZXhwb3J0IGNsYXNzIEpzb25VdGlscyB7XG5cbiAgc3RhdGljIGV4cG9ydFRvRmlsZShjb250ZW50OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgb3B0cz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH0pIHtcbiAgICBpZiAoaXNOaWwoY29udGVudCkpIHJldHVybjsgLy8gU2tpcCBpZiBlbXB0eVxuXG4gICAgLy8gQ3JlYXRlIHRleHQgY29udGVudFxuICAgIGNvbnN0IHRleHRDb250ZW50ID0gY29udGVudCA9PT0gJ3N0cmluZycgPyBjb250ZW50IDogSlNPTi5zdHJpbmdpZnkoY29udGVudCk7XG5cbiAgICAvLyBXcml0ZSB0byBmaWxlXG4gICAgRmlsZXNVdGlscy53cml0ZVRleHRUb0ZpbGUoXG4gICAgICB0ZXh0Q29udGVudCwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIGZpbGVuYW1lOiAnZXhwb3J0Lmpzb24nLFxuICAgICAgICAuLi5vcHRzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgd3JpdGVUb0ZpbGUoY29udGVudDogYW55LFxuICAgICAgICAgICAgICAgICAgICAgb3B0cz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICB9KSB7XG4gICAgaWYgKCFjb250ZW50IHx8IHR5cGVvZiBjb250ZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuOyAvLyBTa2lwIGlmIGVtcHR5XG5cbiAgICBvcHRzID0ge1xuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgZmlsZW5hbWU6ICdleHBvcnQuanNvbicsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgdGV4dCBjb250ZW50XG4gICAgY29uc3QgYXJyYXlVdDggPSBzdHJpbmdUb1U4YShKU09OLnN0cmluZ2lmeShjb250ZW50KSk7XG5cbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2FycmF5VXQ4XSwge3R5cGU6IG9wdHMudHlwZX0pO1xuICAgIGJsb2JbJ2xhc3RNb2RpZmllZERhdGUnXSA9IChuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpO1xuICAgIGJsb2JbJ25hbWUnXSA9IG9wdHMuZmlsZW5hbWU7XG5cbiAgICByZXR1cm4gPEZpbGU+YmxvYjtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUZpbGU8VCA9IGFueT4oZmlsZTogRmlsZSwgb3B0cz86IHtlbmNvZGluZz86IHN0cmluZzt9KTogT2JzZXJ2YWJsZTxGaWxlRXZlbnQ8VD4+IHtcbiAgICByZXR1cm4gRmlsZXNVdGlscy5yZWFkQXNUZXh0KGZpbGUsIG9wdHM/LmVuY29kaW5nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChlID0+IHtcbiAgICAgICAgICBpZiAoZS50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBsb2FkZWQgPSBNYXRoLnJvdW5kKGUubG9hZGVkICogMC44KTtcbiAgICAgICAgICAgIHJldHVybiB7Li4uZSwgbG9hZGVkfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoZSBpbnN0YW5jZW9mIEZpbGVSZXNwb25zZSl7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gZS5ib2R5O1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoYm9keSkgYXMgVDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVJlc3BvbnNlPFQ+KHtib2R5OiBkYXRhfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKGlzTm90TmlsKVxuICAgICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -24,4 +24,4 @@ ImageAttachmentFilter = __decorate([
|
|
|
24
24
|
EntityClass({ typename: 'ImageAttachmentFilterVO' })
|
|
25
25
|
], ImageAttachmentFilter);
|
|
26
26
|
export { ImageAttachmentFilter };
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVncnkubW9kZWwudGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ltYWdlL2dhbGxlcnkvdGVzdGluZy9nYWxsZWdyeS5tb2RlbC50ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDOUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUtuRSxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFnQixTQUFRLE1BQXVCO0lBQXJEOztRQUlMLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsUUFBRyxHQUFXLElBQUksQ0FBQztJQU9yQixDQUFDO0lBTEMsVUFBVSxDQUFDLE1BQVcsRUFBRSxJQUFVO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDaEMsQ0FBQztDQUNGLENBQUE7QUFaWSxlQUFlO0lBRDNCLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0dBQ2xDLGVBQWUsQ0FZM0I7U0FaWSxlQUFlO0FBZXJCLElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXNCLFNBQVEsWUFBb0Q7Q0FJOUYsQ0FBQTtBQUpZLHFCQUFxQjtJQURqQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztHQUN4QyxxQkFBcUIsQ0FJakM7U0FKWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VudGl0eUNsYXNzfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5kZWNvcmF0b3JzJztcbmltcG9ydCB7RW50aXR5fSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0VudGl0eUZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtJbWFnZX0gZnJvbSAnLi4vLi4vaW1hZ2UubW9kZWwnO1xuXG5cbkBFbnRpdHlDbGFzcyh7IHR5cGVuYW1lOiAnSW1hZ2VBdHRhY2htZW50Vk8nIH0pXG5leHBvcnQgY2xhc3MgSW1hZ2VBdHRhY2htZW50IGV4dGVuZHMgRW50aXR5PEltYWdlQXR0YWNobWVudD4gaW1wbGVtZW50cyBJbWFnZSB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gSW1hZ2VBdHRhY2htZW50O1xuXG4gIGRhdGFVcmw6IHN0cmluZyA9IG51bGw7XG4gIHVybDogc3RyaW5nID0gbnVsbDtcblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UsIG9wdHMpO1xuICAgIHRoaXMudXJsID0gc291cmNlLnVybDtcbiAgICB0aGlzLmRhdGFVcmwgPSBzb3VyY2UuZGF0YVVybDtcbiAgfVxufVxuXG5ARW50aXR5Q2xhc3MoeyB0eXBlbmFtZTogJ0ltYWdlQXR0YWNobWVudEZpbHRlclZPJyB9KVxuZXhwb3J0IGNsYXNzIEltYWdlQXR0YWNobWVudEZpbHRlciBleHRlbmRzIEVudGl0eUZpbHRlcjxJbWFnZUF0dGFjaG1lbnRGaWx0ZXIsIEltYWdlQXR0YWNobWVudD4ge1xuXG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IEltYWdlQXR0YWNobWVudEZpbHRlcjtcblxufVxuIl19
|
|
@@ -87,4 +87,4 @@ ImageAttachmentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
|
|
|
87
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImageAttachmentService, decorators: [{
|
|
88
88
|
type: Injectable
|
|
89
89
|
}], ctorParameters: function () { return [{ type: i1.Platform }]; } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9nYWxsZXJ5L3Rlc3RpbmcvZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHM0UsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUU5RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOENBQThDLENBQUM7OztBQUcxRSxXQUFXO0FBRUosSUFBTSxlQUFlLEdBQXJCLE1BQU0sZUFBZ0IsU0FBUSxNQUF1QjtJQUFyRDs7UUFJTCxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUFXLElBQUksQ0FBQztJQVF2QixDQUFDO0lBTkMsVUFBVSxDQUFDLE1BQVcsRUFBRSxJQUFVO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxD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QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQzFDLEdBQUcsY0FBYztZQUNqQixHQUFHLFFBQVE7U0FDWixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUEyQixFQUFFLElBQVU7UUFDckQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFRLElBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDOzttSEExRFUsc0JBQXNCO3VIQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7U29ydERpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0VudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgSUVudGl0aWVzU2VydmljZSwgTG9hZFJlc3VsdH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtpc05pbCwgaXNOb3ROaWwsIHJlbW92ZUR1cGxpY2F0ZXNGcm9tQXJyYXl9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0VudGl0eSwgRW50aXR5VXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5LmRlY29yYXRvcnMnO1xuaW1wb3J0IHtJbWFnZX0gZnJvbSAnLi4vLi4vaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHtFbnRpdHlGaWx0ZXJ9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcblxuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHsgdHlwZW5hbWU6ICdJbWFnZUF0dGFjaG1lbnRWTycgfSlcbmV4cG9ydCBjbGFzcyBJbWFnZUF0dGFjaG1lbnQgZXh0ZW5kcyBFbnRpdHk8SW1hZ2VBdHRhY2htZW50PiBpbXBsZW1lbnRzIEltYWdlIHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBJbWFnZUF0dGFjaG1lbnQ7XG5cbiAgZGF0YVVybDogc3RyaW5nID0gbnVsbDtcbiAgdXJsOiBzdHJpbmcgPSBudWxsO1xuICB0aXRsZTogc3RyaW5nID0gbnVsbDtcblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UsIG9wdHMpO1xuICAgIHRoaXMudXJsID0gc291cmNlLnVybDtcbiAgICB0aGlzLmRhdGFVcmwgPSBzb3VyY2UuZGF0YVVybDtcbiAgICB0aGlzLnRpdGxlID0gc291cmNlLnRpdGxlO1xuICB9XG59XG5cbi8vIEBkeW5hbWljXG5ARW50aXR5Q2xhc3MoeyB0eXBlbmFtZTogJ0ltYWdlQXR0YWNobWVudEZpbHRlclZPJyB9KVxuZXhwb3J0IGNsYXNzIEltYWdlQXR0YWNobWVudEZpbHRlciBleHRlbmRzIEVudGl0eUZpbHRlcjxJbWFnZUF0dGFjaG1lbnRGaWx0ZXIsIEltYWdlQXR0YWNobWVudD4ge1xuXG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IEltYWdlQXR0YWNobWVudEZpbHRlcjtcblxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW1hZ2VBdHRhY2htZW50U2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2VcbiAgaW1wbGVtZW50cyBJRW50aXRpZXNTZXJ2aWNlPEltYWdlQXR0YWNobWVudCwgSW1hZ2VBdHRhY2htZW50RmlsdGVyPiB7XG5cbiAgJGltYWdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFydGlhbDxJbWFnZUF0dGFjaG1lbnQ+W10+KFtcbiAgICBJbWFnZUF0dGFjaG1lbnQuZnJvbU9iamVjdCh7aWQ6IDAsIHVybDogJ2h0dHBzOi8vdGVzdC5zdW1hcmlzLm5ldC9hc3NldHMvaW1nL2JnL3JheS0xLmpwZycsIHRpdGxlOiAncmF5ICMxJ30pLFxuICAgIEltYWdlQXR0YWNobWVudC5mcm9tT2JqZWN0KHtpZDogMSwgdXJsOiAnaHR0cHM6Ly90ZXN0LnN1bWFyaXMubmV0L2Fzc2V0cy9pbWcvYmcvcmF5LTIuanBnJywgdGl0bGU6ICdyYXkgIzInfSlcbiAgXSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2dhbGxlcnktdGVzdGluZy1zZXJ2aWNlXSBDcmVhdGUgc2VydmljZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25TdGFydCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlcj86IEltYWdlQXR0YWNobWVudEZpbHRlciwgb3B0cz86IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyAmIHsgcXVlcnk/OiBhbnkgfSk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxJbWFnZUF0dGFjaG1lbnQ+PiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2dhbGxlcnktdGVzdGluZy1zZXJ2aWNlXSBXYXRjaGluZyBpbWFnZXMuLi4nKTtcbiAgICByZXR1cm4gdGhpcy4kaW1hZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGltYWdlcyA9PiB7XG4gICAgICAgICAgbGV0IGRhdGEgPSAoaW1hZ2VzIHx8IFtdKS5tYXAoSW1hZ2VBdHRhY2htZW50LmZyb21PYmplY3QpO1xuXG4gICAgICAgICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFtnYWxsZXJ5LXRlc3Rpbmctc2VydmljZV0gTG9hZGVkICR7ZGF0YS5sZW5ndGh9IGltYWdlcy4uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIHtkYXRhLCB0b3RhbDogZGF0YS5sZW5ndGh9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IEltYWdlQXR0YWNobWVudFtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tnYWxsZXJ5LXNlcnZpY2UtdGVzdGluZ10gU2F2aW5nIGltYWdlcy4uLicgKyBKU09OLnN0cmluZ2lmeShlbnRpdGllcykpO1xuICAgIGlmICghZW50aXRpZXMpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGV4aXN0aW5nSW1hZ2VzID0gdGhpcy4kaW1hZ2VzLnZhbHVlO1xuICAgIGxldCBjdXJyZW50SWQgPSBleGlzdGluZ0ltYWdlcy5yZWR1Y2UoKHJlcywgaW1hZ2UpID0+IE1hdGgubWF4KHJlcywgK2ltYWdlPy5pZCB8fCAwKSwgMCk7XG4gICAgZW50aXRpZXMuZmlsdGVyKGl0ZW0gPT4gaXNOaWwoaXRlbS5pZCkpXG4gICAgICAuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5pZCA9ICsrY3VycmVudElkO1xuICAgIH0pO1xuICAgIHRoaXMuJGltYWdlcy5uZXh0KHJlbW92ZUR1cGxpY2F0ZXNGcm9tQXJyYXkoW1xuICAgICAgLi4uZXhpc3RpbmdJbWFnZXMsXG4gICAgICAuLi5lbnRpdGllc1xuICAgIF0sICdpZCcpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChlbnRpdGllczogSW1hZ2VBdHRhY2htZW50W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRlbGV0ZWRJZHMgPSAoZW50aXRpZXN8fFtdKS5tYXAoaXRlbSA9PiBpdGVtLmlkKS5maWx0ZXIoaXNOb3ROaWwpO1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9ICh0aGlzLiRpbWFnZXMudmFsdWUpLmZpbHRlcihpdGVtID0+ICFkZWxldGVkSWRzLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICB0aGlzLiRpbWFnZXMubmV4dChmaWx0ZXJlZERhdGEpO1xuICB9XG5cbiAgYXNGaWx0ZXIoZmlsdGVyOiBhbnkpIHtcbiAgICByZXR1cm4gSW1hZ2VBdHRhY2htZW50RmlsdGVyLmZyb21PYmplY3QoZmlsdGVyKTtcbiAgfVxufVxuIl19
|
|
@@ -24,4 +24,4 @@ ProgressInterceptor = __decorate([
|
|
|
24
24
|
__param(0, Inject(APP_PROGRESS_BAR_SERVICE))
|
|
25
25
|
], ProgressInterceptor);
|
|
26
26
|
export { ProgressInterceptor };
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ2Vzcy5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ludGVyY2VwdG9ycy9wcm9nZXNzLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUcsT0FBTyxFQUFFLHdCQUF3QixFQUF1QixNQUFNLGtDQUFrQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEMsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7SUFDNUIsWUFBc0Qsa0JBQXVDO1FBQXZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7SUFDN0YsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ3BCLElBQUksQ0FDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNwQztRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUNKLENBQUE7QUFsQlksbUJBQW1CO0lBQ2YsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtHQURwQyxtQkFBbUIsQ0FrQi9CO1NBbEJZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFQUF9QUk9HUkVTU19CQVJfU0VSVklDRSwgSVByb2dyZXNzQmFyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyZXNzLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgY29uc3RydWN0b3IoQEluamVjdChBUFBfUFJPR1JFU1NfQkFSX1NFUlZJQ0UpIHByaXZhdGUgcHJvZ3Jlc3NCYXJTZXJ2aWNlOiBJUHJvZ3Jlc3NCYXJTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlLmluY3JlYXNlKCk7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2UuZGVjcmVhc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVyciwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0JhclNlcnZpY2UuZGVjcmVhc2UoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -789,7 +789,7 @@ MatAutocompleteField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
789
789
|
provide: NG_VALUE_ACCESSOR,
|
|
790
790
|
multi: true,
|
|
791
791
|
useExisting: forwardRef(() => MatAutocompleteField)
|
|
792
|
-
}], viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelect"], descendants: true }, { propertyName: "ionSearchbar", first: true, predicate: ["ionSearchbar"], descendants: true }, { propertyName: "matInputText", first: true, predicate: ["matInputText"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], ngImport: i0, template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <!-- readonly -->\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [title]=\"_displayValue\"\n class=\"mat-form-field-disabled\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\" >\n <ion-text>{{displayWith(value)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"_displayValue\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Mobile or Multiple (use <mat-select>) -->\n <mat-select #matSelect\n *ngIf=\"mobile || multiple; else desktopTemplate\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n [compareWith]=\"equals\"\n [multiple]=\"multiple\"\n [typeaheadDebounceInterval]=\"debounceTime * 10\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- Search bar -->\n <mat-option class=\"mat-select-searchbar\" *ngIf=\"showSearchBar\"\n [class.mat-select-searchbar-sticky]=\"stickySearchBar\"\n disabled>\n <ion-searchbar #ionSearchbar\n inputmode=\"search\"\n autocomplete=\"off\"\n animated=\"true\"\n showClearButton=\"true\"\n [debounce]=\"debounceTime\"\n (ionClear)=\"markAsLoading()\"\n (ionInput)=\"ionSearchBarChanged($event)\"\n [placeholder]=\"'COMMON.BTN_SEARCH'|translate\"\n ></ion-searchbar>\n </mat-option>\n\n <!-- Headers -->\n <ion-row class=\"mat-select-header column ion-no-padding\"\n [class.multiple]=\"multiple\"\n [class.mat-select-searchbar-sticky]=\"showSearchBar && stickySearchBar\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required && !multiple && !clearable\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"_$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <!-- Options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- footer -->\n <mat-option *ngIf=\"itemCount as count\" class=\"mat-option-footer mat-autocomplete-footer ion-no-padding\" disabled>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </mat-option>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(_displayValue | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #desktopTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowDown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [panelWidth]=\"panelWidth\">\n <!-- Headers -->\n <ion-row class=\"mat-autocomplete-header column ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- Options -->\n <ng-container *ngIf=\"_$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\"\n [title]=\"text.innerText\">\n <ion-text><span #text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></span></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(_displayValue | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n\n <!-- footer -->\n <ion-row *ngIf=\"itemCount as count\" class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"!mobile && !multiple\"\n (click)=\"dropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:#00000078;font-size:150%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i1.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgInitDirective, selector: "[ngInit]", outputs: ["ngInit"] }, { kind: "directive", type: i5.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i12.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "directive", type: i13.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: i15.HighlightPipe, name: "highlight" }, { kind: "pipe", type: i16.EmptyArrayPipe, name: "isEmptyArray" }, { kind: "pipe", type: i17.StrLengthPipe, name: "strLength" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
792
|
+
}], viewQueries: [{ propertyName: "matSelect", first: true, predicate: ["matSelect"], descendants: true }, { propertyName: "ionSearchbar", first: true, predicate: ["ionSearchbar"], descendants: true }, { propertyName: "matInputText", first: true, predicate: ["matInputText"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], ngImport: i0, template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <!-- readonly -->\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [title]=\"_displayValue\"\n class=\"mat-form-field-disabled\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\" >\n <ion-text>{{displayWith(value)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"_displayValue\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Mobile or Multiple (use <mat-select>) -->\n <mat-select #matSelect\n *ngIf=\"mobile || multiple; else desktopTemplate\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n [compareWith]=\"equals\"\n [multiple]=\"multiple\"\n [typeaheadDebounceInterval]=\"debounceTime * 10\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- Search bar -->\n <mat-option class=\"mat-select-searchbar\" *ngIf=\"showSearchBar\"\n [class.mat-select-searchbar-sticky]=\"stickySearchBar\"\n disabled>\n <ion-searchbar #ionSearchbar\n inputmode=\"search\"\n autocomplete=\"off\"\n animated=\"true\"\n showClearButton=\"true\"\n [debounce]=\"debounceTime\"\n (ionClear)=\"markAsLoading()\"\n (ionInput)=\"ionSearchBarChanged($event)\"\n [placeholder]=\"'COMMON.BTN_SEARCH'|translate\"\n ></ion-searchbar>\n </mat-option>\n\n <!-- Headers -->\n <ion-row class=\"mat-select-header column ion-no-padding\"\n [class.multiple]=\"multiple\"\n [class.mat-select-searchbar-sticky]=\"showSearchBar && stickySearchBar\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required && !multiple && !clearable\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"_$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <!-- Options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- footer -->\n <mat-option *ngIf=\"itemCount as count\" class=\"mat-option-footer mat-autocomplete-footer ion-no-padding\" disabled>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </mat-option>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(_displayValue | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #desktopTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowDown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [panelWidth]=\"panelWidth\">\n <!-- Headers -->\n <ion-row class=\"mat-autocomplete-header column ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- Options -->\n <ng-container *ngIf=\"_$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\"\n [title]=\"text.innerText\">\n <ion-text><span #text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></span></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(_displayValue | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n\n <!-- footer -->\n <ion-row *ngIf=\"itemCount as count\" class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"!mobile && !multiple\"\n (click)=\"dropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:#00000078;font-size:150%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i1.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgInitDirective, selector: "[ngInit]", outputs: ["ngInit"] }, { kind: "directive", type: i5.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i12.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "directive", type: i13.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: i15.HighlightPipe, name: "highlight" }, { kind: "pipe", type: i16.EmptyArrayPipe, name: "isEmptyArray" }, { kind: "pipe", type: i17.StrLengthPipe, name: "strLength" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
793
793
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MatAutocompleteField, decorators: [{
|
|
794
794
|
type: Component,
|
|
795
795
|
args: [{ selector: 'mat-autocomplete-field', providers: [{
|
|
@@ -116,4 +116,4 @@ StartableObservableService = __decorate([
|
|
|
116
116
|
__param(0, Optional())
|
|
117
117
|
], StartableObservableService);
|
|
118
118
|
export { StartableObservableService };
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRhYmxlLW9ic2VydmFibGUtc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1vYnNlcnZhYmxlLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQ7O0dBRUc7QUFDSCxJQUFzQiwwQkFBMEIsR0FBaEQsTUFBc0IsMEJBQTBCO0lBYzlDLFlBQ2MsbUJBQW1EO1FBYnhELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUksSUFBSSxDQUFDLENBQUM7UUFDM0MsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBSyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLENBQUMsc0NBQXNDO1FBRXRFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsa0JBQWEsR0FBZSxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQXVCLElBQUksQ0FBQztRQUM5QyxrQkFBYSxHQUFpQixJQUFJLENBQUM7UUFLekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLG1CQUFtQjtZQUMzQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFO1lBQ25DLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFRO1FBQ1osSUFBSSxJQUFJ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QWhJcUIsMEJBQTBCO0lBZTNDLFdBQUEsUUFBUSxFQUFFLENBQUE7R0FmTywwQkFBMEIsQ0FnSS9DO1NBaElxQiwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJU3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5cbi8qKlxuICogU2FtZSBhcyBTdGFydGFibGVTZXJ2aWNlLCBidSB3aXRoIGEgZGF0YVN1YmplY3QgaW5zdGVhZCBvZiBhIHNpbXBsZSAnZGF0YScgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXJ0YWJsZU9ic2VydmFibGVTZXJ2aWNlPFQgPSBhbnksIE8gPSBhbnk+IGltcGxlbWVudHMgSVN0YXJ0YWJsZVNlcnZpY2U8VD4ge1xuXG4gIHJlYWRvbmx5IGRhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPihudWxsKTtcbiAgcmVhZG9ubHkgc3RhcnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8VD4oKTtcbiAgcmVhZG9ubHkgc3RvcFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBfZGVidWcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zdGFydEJ5UmVhZHlGdW5jdGlvbiA9IHRydWU7IC8vIHNob3VsZCBzdGFydCB3aGVuIGNhbGxpbmcgcmVhZHkoKSA/XG5cbiAgcHJpdmF0ZSBfc3RhcnRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zdGFydFByb21pc2U6IFByb21pc2U8VD4gPSBudWxsO1xuICBwcml2YXRlIF9zdGFydFByZXJlcXVpc2l0ZTogKCkgPT4gUHJvbWlzZTxhbnk+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcmVyZXF1aXNpdGVTZXJ2aWNlPzogeyByZWFkeTogKCkgPT4gUHJvbWlzZTxhbnk+IH1cbiAgKSB7XG4gICAgdGhpcy5fc3RhcnRQcmVyZXF1aXNpdGUgPSBwcmVyZXF1aXNpdGVTZXJ2aWNlXG4gICAgICA/ICgpID0+IHByZXJlcXVpc2l0ZVNlcnZpY2UucmVhZHkoKVxuICAgICAgOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHN0YXJ0KG9wdHM/OiBPKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0UHJvbWlzZSkgcmV0dXJuIHRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgICBpZiAodGhpcy5fc3RhcnRlZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlKTtcblxuICAgIHRoaXMuX3N0YXJ0UHJvbWlzZSA9IHRoaXMuX3N0YXJ0UHJlcmVxdWlzaXRlKClcbiAgICAgIC50aGVuKCgpID0+IHRoaXMubmdPblN0YXJ0KG9wdHMpKVxuICAgICAgLnRoZW4oZGF0YSA9PiB7XG5cbiAgICAgICAgdGhpcy5fc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3N0YXJ0UHJvbWlzZSA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBTaG91bGQgYmUgZG9uZSBBRlRFUiAndGhpcy5fc3RhcnRlZCA9IHRydWUnLCBiZWNhdXNlIG9mIHRoZSAnZmlsdGVyJyBvcGVyYXRvciwgaW5zaWRlIHJlYWR5KCkgZnVuY3Rpb25cbiAgICAgICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KGRhdGEpO1xuICAgICAgICB0aGlzLnN0YXJ0U3ViamVjdC5uZXh0KGRhdGEpO1xuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RvcHBlZCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBhIHNlcnZpY2U6ICcgKyAoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciksIGVycik7XG4gICAgICAgICAgdGhpcy5fc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3N0YXJ0UHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRQcm9taXNlO1xuICB9XG5cbiAgcmVhZHkoKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0ZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kYXRhU3ViamVjdC52YWx1ZSk7XG4gICAgaWYgKHRoaXMuX3N0YXJ0UHJvbWlzZSkgcmV0dXJuIHRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgICBpZiAodGhpcy5fc3RhcnRCeVJlYWR5RnVuY3Rpb24pIHJldHVybiB0aGlzLnN0YXJ0KCk7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnN0b3BTdWJqZWN0KSxcbiAgICAgICAgLy8gV2FpdCBzdGFydCgpIHRvIGJlIGNhbGxlZCwgdG8gZXhjbHVkZSB0aGUgaW5pdGlhbCAnbnVsbCcgdmFsdWVcbiAgICAgICAgZmlsdGVyKF8gPT4gdGhpcy5fc3RhcnRlZClcbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AoKSB7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgYXdhaXQgdGhpcy5uZ09uU3RvcCgpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RvcCBhIHNlcnZpY2U6ICcgKyAoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciksIGVycik7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhcnRQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdG9wU3ViamVjdC5uZXh0KCk7IC8vIFN0b3AgYWxsIHJ1bm5pbmcgb2JzZXJ2YWJsZXNcbiAgICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChudWxsKTsgLy8gUmVzZXQgZGF0YVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlc3RhcnQob3B0cz86IE8pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fc3RhcnRQcm9taXNlKSBhd2FpdCB0aGlzLl9zdGFydFByb21pc2U7IC8vIFdhaXQgZW5kIG9mIHByZXZpb3VzIGxvYWRpbmdcbiAgICBpZiAodGhpcy5fc3RhcnRlZCkgYXdhaXQgdGhpcy5zdG9wKCk7IC8vIFRoZW4gc3RvcCBpZiBzdGFydGVkXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQob3B0cyk7IC8vIFRoZW4gc3RhcnQgYWdhaW5cbiAgfVxuXG4gIGdldCBzdGFydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydGVkO1xuICB9XG5cbiAgZ2V0IHN0YXJ0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fc3RhcnRlZCAmJiAhdGhpcy5fc3RhcnRQcm9taXNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBkYXRhKCk6IFQge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldCBkYXRhKHZhbHVlOiBUKSB7XG4gICAgaWYgKHRoaXMuZGF0YVN1YmplY3QudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlclN1YnNjcmlwdGlvbihzdWI6IFN1YnNjcmlwdGlvbikge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuX3N1YnNjcmlwdGlvbiB8fCBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChzdWIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVucmVnaXN0ZXJTdWJzY3JpcHRpb24oc3ViOiBTdWJzY3JpcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnJlbW92ZShzdWIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlKCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25TdG9wKCk6IFByb21pc2U8dm9pZD4gfCB2b2lkIHtcbiAgICAvLyBDYW4gYmUgb3ZlcndyaXR0ZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG5nT25TdGFydChvcHRzPzogTyk6IFByb21pc2U8VD47XG59XG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRhYmxlLW9ic2VydmFibGUtc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1vYnNlcnZhYmxlLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQ7O0dBRUc7QUFDSSxJQUFlLDBCQUEwQixHQUF6QyxNQUFlLDBCQUEwQjtJQWM5QyxZQUNjLG1CQUFtRDtRQWJ4RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFJLElBQUksQ0FBQyxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUssQ0FBQztRQUNoQyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFakMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLDBCQUFxQixHQUFHLElBQUksQ0FBQyxDQUFDLHNDQUFzQztRQUV0RSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGtCQUFhLEdBQWUsSUFBSSxDQUFDO1FBQ2pDLHVCQUFrQixHQUF1QixJQUFJLENBQUM7UUFDOUMsa0JBQWEsR0FBaUIsSUFBSSxDQUFDO1FBS3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxtQkFBbUI7WUFDM0MsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRTtZQUNuQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBUTtRQUNaLElBQUksSUFBSSxD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SXFCLDBCQUEwQjtJQWUzQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0dBZk8sMEJBQTBCLENBZ0kvQztTQWhJcUIsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SVN0YXJ0YWJsZVNlcnZpY2V9IGZyb20gJy4vc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuXG4vKipcbiAqIFNhbWUgYXMgU3RhcnRhYmxlU2VydmljZSwgYnUgd2l0aCBhIGRhdGFTdWJqZWN0IGluc3RlYWQgb2YgYSBzaW1wbGUgJ2RhdGEnIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZTxUID0gYW55LCBPID0gYW55PiBpbXBsZW1lbnRzIElTdGFydGFibGVTZXJ2aWNlPFQ+IHtcblxuICByZWFkb25seSBkYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4obnVsbCk7XG4gIHJlYWRvbmx5IHN0YXJ0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFQ+KCk7XG4gIHJlYWRvbmx5IHN0b3BTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgX2RlYnVnID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfc3RhcnRCeVJlYWR5RnVuY3Rpb24gPSB0cnVlOyAvLyBzaG91bGQgc3RhcnQgd2hlbiBjYWxsaW5nIHJlYWR5KCkgP1xuXG4gIHByaXZhdGUgX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3RhcnRQcm9taXNlOiBQcm9taXNlPFQ+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3RhcnRQcmVyZXF1aXNpdGU6ICgpID0+IFByb21pc2U8YW55PiA9IG51bGw7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJlcmVxdWlzaXRlU2VydmljZT86IHsgcmVhZHk6ICgpID0+IFByb21pc2U8YW55PiB9XG4gICkge1xuICAgIHRoaXMuX3N0YXJ0UHJlcmVxdWlzaXRlID0gcHJlcmVxdWlzaXRlU2VydmljZVxuICAgICAgPyAoKSA9PiBwcmVyZXF1aXNpdGVTZXJ2aWNlLnJlYWR5KClcbiAgICAgIDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBzdGFydChvcHRzPzogTyk6IFByb21pc2U8VD4ge1xuICAgIGlmICh0aGlzLl9zdGFydFByb21pc2UpIHJldHVybiB0aGlzLl9zdGFydFByb21pc2U7XG4gICAgaWYgKHRoaXMuX3N0YXJ0ZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kYXRhU3ViamVjdC52YWx1ZSk7XG5cbiAgICB0aGlzLl9zdGFydFByb21pc2UgPSB0aGlzLl9zdGFydFByZXJlcXVpc2l0ZSgpXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm5nT25TdGFydChvcHRzKSlcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuXG4gICAgICAgIHRoaXMuX3N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9zdGFydFByb21pc2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gU2hvdWxkIGJlIGRvbmUgQUZURVIgJ3RoaXMuX3N0YXJ0ZWQgPSB0cnVlJywgYmVjYXVzZSBvZiB0aGUgJ2ZpbHRlcicgb3BlcmF0b3IsIGluc2lkZSByZWFkeSgpIGZ1bmN0aW9uXG4gICAgICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChkYXRhKTtcbiAgICAgICAgdGhpcy5zdGFydFN1YmplY3QubmV4dChkYXRhKTtcblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BwZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgYSBzZXJ2aWNlOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpLCBlcnIpO1xuICAgICAgICAgIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9zdGFydFByb21pc2UgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgfVxuXG4gIHJlYWR5KCk6IFByb21pc2U8VD4ge1xuICAgIGlmICh0aGlzLl9zdGFydGVkKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YVN1YmplY3QudmFsdWUpO1xuICAgIGlmICh0aGlzLl9zdGFydFByb21pc2UpIHJldHVybiB0aGlzLl9zdGFydFByb21pc2U7XG4gICAgaWYgKHRoaXMuX3N0YXJ0QnlSZWFkeUZ1bmN0aW9uKSByZXR1cm4gdGhpcy5zdGFydCgpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YVN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5zdG9wU3ViamVjdCksXG4gICAgICAgIC8vIFdhaXQgc3RhcnQoKSB0byBiZSBjYWxsZWQsIHRvIGV4Y2x1ZGUgdGhlIGluaXRpYWwgJ251bGwnIHZhbHVlXG4gICAgICAgIGZpbHRlcihfID0+IHRoaXMuX3N0YXJ0ZWQpXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBzdG9wKCkge1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgIGF3YWl0IHRoaXMubmdPblN0b3AoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0b3AgYSBzZXJ2aWNlOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpLCBlcnIpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXJ0UHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcFN1YmplY3QubmV4dCgpOyAvLyBTdG9wIGFsbCBydW5uaW5nIG9ic2VydmFibGVzXG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQobnVsbCk7IC8vIFJlc2V0IGRhdGFcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXN0YXJ0KG9wdHM/OiBPKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0UHJvbWlzZSkgYXdhaXQgdGhpcy5fc3RhcnRQcm9taXNlOyAvLyBXYWl0IGVuZCBvZiBwcmV2aW91cyBsb2FkaW5nXG4gICAgaWYgKHRoaXMuX3N0YXJ0ZWQpIGF3YWl0IHRoaXMuc3RvcCgpOyAvLyBUaGVuIHN0b3AgaWYgc3RhcnRlZFxuICAgIHJldHVybiB0aGlzLnN0YXJ0KG9wdHMpOyAvLyBUaGVuIHN0YXJ0IGFnYWluXG4gIH1cblxuICBnZXQgc3RhcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRlZDtcbiAgfVxuXG4gIGdldCBzdGFydGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9zdGFydFByb21pc2U7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX3N0YXJ0ZWQgJiYgIXRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZGF0YSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXQgZGF0YSh2YWx1ZTogVCkge1xuICAgIGlmICh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJTdWJzY3JpcHRpb24oc3ViOiBTdWJzY3JpcHRpb24pIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl9zdWJzY3JpcHRpb24gfHwgbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YjogU3Vic2NyaXB0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy5yZW1vdmUoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZCB7XG4gICAgLy8gQ2FuIGJlIG92ZXJ3cml0dGVuIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBuZ09uU3RhcnQob3B0cz86IE8pOiBQcm9taXNlPFQ+O1xufVxuIl19
|